forked from saleor/saleor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_page.py
106 lines (80 loc) · 3.26 KB
/
test_page.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
from unittest import mock
from django.forms.models import model_to_dict
from django.urls import reverse
from saleor.dashboard.page.forms import PageForm
def test_page_list(admin_client):
url = reverse('dashboard:page-list')
response = admin_client.get(url)
assert response.status_code == 200
def test_page_edit(admin_client, page):
url = reverse('dashboard:page-update', args=[page.pk])
response = admin_client.get(url)
assert response.status_code == 200
data = {
'slug': 'changed-url',
'title': 'foo',
'content': 'bar',
'visible': True}
response = admin_client.post(url, data=data)
assert response.status_code == 302
def test_page_add(admin_client):
url = reverse('dashboard:page-add')
response = admin_client.get(url)
assert response.status_code == 200
data = {
'slug': 'aaaa',
'title': 'foo',
'content': 'bar',
'visible': False}
response = admin_client.post(url, data=data)
assert response.status_code == 302
@mock.patch('saleor.dashboard.page.views.get_menus_that_needs_update')
@mock.patch('saleor.dashboard.page.views.update_menus')
def test_page_delete(mock_update_menus, mock_get_menus, admin_client, page):
url = reverse('dashboard:page-delete', args=[page.pk])
response = admin_client.get(url)
assert response.status_code == 200
mock_get_menus.return_value = [page.pk]
response = admin_client.post(url, data={'a': 'b'})
assert response.status_code == 302
assert mock_get_menus.called
mock_update_menus.assert_called_once_with([page.pk])
@mock.patch('saleor.dashboard.page.views.get_menus_that_needs_update')
@mock.patch('saleor.dashboard.page.views.update_menus')
def test_page_delete_menu_not_updated(
mock_update_menus, mock_get_menus, admin_client, page):
url = reverse('dashboard:page-delete', args=[page.pk])
mock_get_menus.return_value = []
response = admin_client.post(url, data={'a': 'b'})
assert response.status_code == 302
assert mock_get_menus.called
assert not mock_update_menus.called
def test_sanitize_page_content(page, category):
data = model_to_dict(page)
data['content'] = (
'<b>bold</b><p><i>italic</i></p><h2>Header</h2><h3>subheader</h3>'
'<blockquote>quote</blockquote>'
'<p><a href="www.mirumee.com">link</a></p>'
'<p>an <script>evil()</script>example</p>')
form = PageForm(data, instance=page)
assert form.is_valid()
form.save()
assert page.content == (
'<b>bold</b><p><i>italic</i></p><h2>Header</h2><h3>subheader</h3>'
'<blockquote>quote</blockquote>'
'<p><a href="www.mirumee.com">link</a></p>'
'<p>an <script>evil()</script>example</p>')
assert page.seo_description == (
'bolditalicHeadersubheaderquotelinkan evil()example')
def test_set_page_seo_description(page):
seo_description = (
'This is a dummy page. '
'HTML <b>shouldn\'t be removed</b> since it\'s a simple text field.')
data = model_to_dict(page)
data['price'] = 20
data['content'] = 'a description'
data['seo_description'] = seo_description
form = PageForm(data, instance=page)
assert form.is_valid()
form.save()
assert page.seo_description == seo_description