Passed
Push — main ( b25e28...d471db )
by Jochen
04:48
created

test_unpublish()   A

Complexity

Conditions 1

Size

Total Lines 14
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nop 2
dl 0
loc 14
rs 9.85
c 0
b 0
f 0
1
"""
2
:Copyright: 2014-2022 Jochen Kupperschmidt
3
:License: Revised BSD (see `LICENSE` file for details)
4
"""
5
6
from byceps.services.news import service as item_service
7
8
9
def test_view(news_admin_client, item):
10
    url = f'/admin/news/items/{item.id}'
11
    response = news_admin_client.get(url)
12
    assert response.status_code == 200
13
14
15
def test_view_version(news_admin_client, item):
16
    version = item_service.get_current_item_version(item.id)
17
    url = f'/admin/news/versions/{version.id}'
18
    response = news_admin_client.get(url)
19
    assert response.status_code == 200
20
21
22
def test_list_versions(news_admin_client, item):
23
    url = f'/admin/news/items/{item.id}/versions'
24
    response = news_admin_client.get(url)
25
    assert response.status_code == 200
26
27
28
def test_compare_versions(news_admin_client, item):
29
    version = item_service.get_current_item_version(item.id)
30
    url = f'/admin/news/items/{version.id}/compare_to/{version.id}'
31
    response = news_admin_client.get(url)
32
    assert response.status_code == 200
33
34
35
def test_create_form(news_admin_client, channel):
36
    url = f'/admin/news/for_channel/{channel.id}/create'
37
    response = news_admin_client.get(url)
38
    assert response.status_code == 200
39
40
41
def test_create(news_admin_client, channel, news_admin):
42
    slug = 'what-a-blast'
43
    title = 'Wow, That Party was a Blast!'
44
    body = 'So many cool memories.'
45
    image_url_path = 'party-action.jpeg'
46
47
    url = f'/admin/news/for_channel/{channel.id}'
48
    form_data = {
49
        'slug': slug,
50
        'title': title,
51
        'body_format': 'html',
52
        'body': body,
53
        'image_url_path': image_url_path,
54
    }
55
    response = news_admin_client.post(url, data=form_data)
56
57
    location = response.headers['Location']
58
    item_id = location.rpartition('/')[-1]
59
60
    item = item_service.find_item(item_id)
61
    assert item is not None
62
    assert item.id is not None
63
    assert item.channel.id == channel.id
64
    assert item.slug == slug
65
    assert item.published_at is None
66
    assert not item.published
67
    assert item.title == title
68
    assert item.body == body
69
    assert (
70
        item.image_url_path
71
        == f'/data/global/news_channels/{channel.id}/party-action.jpeg'
72
    )
73
    assert item.images == []
74
75
76
def test_update_form(news_admin_client, item):
77
    url = f'/admin/news/items/{item.id}/update'
78
    response = news_admin_client.get(url)
79
    assert response.status_code == 200
80
81
82
def test_publish_later_form(news_admin_client, item):
83
    url = f'/admin/news/items/{item.id}/publish_later'
84
    response = news_admin_client.get(url)
85
    assert response.status_code == 200
86
87
88
def test_publish_later(news_admin_client, item):
89
    item_before = item_service.find_item(item.id)
90
    assert item_before.published_at is None
91
    assert not item_before.published
92
93
    url = f'/admin/news/items/{item.id}/publish_later'
94
    form_data = {
95
        'publish_on': '2021-01-23',
96
        'publish_at': '23:42',
97
    }
98
    response = news_admin_client.post(url, data=form_data)
99
    assert response.status_code == 302
100
101
    item_after = item_service.find_item(item.id)
102
    assert item_after.published_at is not None
103
    assert item_after.published
104
105
106
def test_publish_now(news_admin_client, item):
107
    item_before = item_service.find_item(item.id)
108
    assert item_before.published_at is None
109
    assert not item_before.published
110
111
    url = f'/admin/news/items/{item.id}/publish_now'
112
    response = news_admin_client.post(url)
113
    assert response.status_code == 204
114
115
    item_after = item_service.find_item(item.id)
116
    assert item_after.published_at is not None
117
    assert item_after.published
118
119
120
def test_unpublish(news_admin_client, item):
121
    item_service.publish_item(item.id)
122
123
    item_before = item_service.find_item(item.id)
124
    assert item_before.published_at is not None
125
    assert item_before.published
126
127
    url = f'/admin/news/items/{item.id}/unpublish'
128
    response = news_admin_client.post(url)
129
    assert response.status_code == 204
130
131
    item_after = item_service.find_item(item.id)
132
    assert item_after.published_at is None
133
    assert not item_after.published
134