|
|
@@ -1,5 +1,8 @@
|
|
1
|
1
|
from django.core.urlresolvers import reverse
|
|
2
|
2
|
from django.contrib.flatpages.models import FlatPage
|
|
|
3
|
+from django.test import TestCase
|
|
|
4
|
+
|
|
|
5
|
+from oscar.apps.dashboard.pages.forms import PageUpdateForm
|
|
3
|
6
|
from oscar.test.testcases import WebTestCase
|
|
4
|
7
|
|
|
5
|
8
|
|
|
|
@@ -28,29 +31,13 @@ class TestPageDashboard(WebTestCase):
|
|
28
|
31
|
self.assertTrue(self.flatpage_1 in objects)
|
|
29
|
32
|
self.assertTrue(self.flatpage_2 in objects)
|
|
30
|
33
|
|
|
31
|
|
- def test_doesnt_allow_existing_pages_to_be_clobbered(self):
|
|
32
|
|
- self.assertEqual(FlatPage.objects.count(), 2)
|
|
33
|
|
-
|
|
34
|
|
- page = self.get(reverse('dashboard:page-create'))
|
|
35
|
|
- form = page.form
|
|
36
|
|
- form['title'] = 'test'
|
|
37
|
|
- form['url'] = '/dashboard/pages/'
|
|
38
|
|
- response = form.submit()
|
|
39
|
|
- self.assertEqual(200, response.status_code)
|
|
40
|
|
- self.assertEqual("Specified page already exists!",
|
|
41
|
|
- response.context['form'].errors['url'][0])
|
|
42
|
|
- self.assertEqual(FlatPage.objects.count(), 2)
|
|
43
|
|
-
|
|
44
|
|
- def test_allows_page_to_be_created(self):
|
|
45
|
|
- page = self.get(reverse('dashboard:page-create'))
|
|
46
|
|
- form = page.form
|
|
47
|
|
- form['title'] = 'test'
|
|
48
|
|
- form['url'] = '/my-new-url/'
|
|
49
|
|
- form['content'] = 'my content here'
|
|
50
|
|
- response = form.submit()
|
|
|
34
|
+ def test_dashboard_delete_pages(self):
|
|
|
35
|
+ page = self.get(reverse('dashboard:page-list'))
|
|
|
36
|
+ delete_page = page.click(linkid="delete_page_%s" % self.flatpage_1.id)
|
|
|
37
|
+ response = delete_page.form.submit()
|
|
51
|
38
|
|
|
52
|
39
|
self.assertIsRedirect(response)
|
|
53
|
|
- self.assertEqual(FlatPage.objects.count(), 3)
|
|
|
40
|
+ self.assertEqual(FlatPage.objects.count(), 1)
|
|
54
|
41
|
|
|
55
|
42
|
def test_dashboard_create_page_with_slugified_url(self):
|
|
56
|
43
|
page = self.get(reverse('dashboard:page-create'))
|
|
|
@@ -60,53 +47,120 @@ class TestPageDashboard(WebTestCase):
|
|
60
|
47
|
response = form.submit()
|
|
61
|
48
|
|
|
62
|
49
|
self.assertIsRedirect(response)
|
|
63
|
|
- self.assertEqual(FlatPage.objects.count(), 3)
|
|
64
|
50
|
|
|
65
|
|
- def test_dashboard_create_page_with_exisiting_url_does_not_work(self):
|
|
|
51
|
+ def test_dashboard_create_page_with_duplicate_slugified_url_fails(self):
|
|
66
|
52
|
page = self.get(reverse('dashboard:page-create'))
|
|
67
|
53
|
form = page.form
|
|
68
|
|
- form['title'] = 'test'
|
|
69
|
|
- form['url'] = '/url1/' # already exists
|
|
|
54
|
+ form['title'] = 'url1' # This will slugify to url1
|
|
70
|
55
|
form['content'] = 'my content here'
|
|
71
|
56
|
response = form.submit()
|
|
72
|
57
|
|
|
73
|
58
|
self.assertEqual(200, response.status_code)
|
|
74
|
|
- self.assertEqual("Specified page already exists!",
|
|
75
|
|
- response.context['form'].errors['url'][0])
|
|
76
|
|
- self.assertEqual(FlatPage.objects.count(), 2)
|
|
77
|
59
|
|
|
78
|
|
- def test_dashboard_update_page_valid_url(self):
|
|
79
|
|
- page = self.get(reverse('dashboard:page-update',
|
|
80
|
|
- kwargs={'pk': self.flatpage_1.pk}))
|
|
|
60
|
+ def test_default_site_added_for_new_pages(self):
|
|
|
61
|
+ page = self.get(reverse('dashboard:page-create'))
|
|
81
|
62
|
form = page.form
|
|
82
|
63
|
form['title'] = 'test'
|
|
83
|
|
- form['url'] = '/new/url/' # already exists
|
|
84
|
|
- form['content'] = 'my content here'
|
|
85
|
|
- response = form.submit()
|
|
|
64
|
+ form['url'] = '/hello-world/'
|
|
|
65
|
+ form.submit()
|
|
86
|
66
|
|
|
87
|
|
- self.assertIsRedirect(response)
|
|
|
67
|
+ p = FlatPage.objects.get(url='/hello-world/')
|
|
|
68
|
+ self.assertEqual(p.sites.count(), 1)
|
|
88
|
69
|
|
|
89
|
|
- page = FlatPage.objects.get(pk=self.flatpage_1.pk)
|
|
90
|
|
- self.assertEqual(page.title, 'test')
|
|
91
|
|
- self.assertEqual(page.url, '/new/url/')
|
|
92
|
|
- self.assertEqual(page.content, "my content here")
|
|
93
|
|
- self.assertEqual(page.sites.count(), 1)
|
|
94
|
70
|
|
|
95
|
|
- def test_dashboard_update_page_invalid_url(self):
|
|
96
|
|
- page = self.get(reverse('dashboard:page-update',
|
|
97
|
|
- kwargs={'pk': self.flatpage_1.pk}))
|
|
98
|
|
- form = page.form
|
|
99
|
|
- form['url'] = '/url2/' # already exists
|
|
100
|
|
- response = form.submit()
|
|
|
71
|
+class DashboardPageUpdateFormTestCase(TestCase):
|
|
101
|
72
|
|
|
102
|
|
- self.assertEqual(200, response.status_code)
|
|
103
|
|
- self.assertEqual("Specified page already exists!",
|
|
104
|
|
- response.context['form'].errors['url'][0])
|
|
|
73
|
+ def setUp(self):
|
|
|
74
|
+ self.flatpage_1 = FlatPage.objects.create(
|
|
|
75
|
+ title='title1', url='/url1/',
|
|
|
76
|
+ content='some content')
|
|
|
77
|
+ self.flatpage_2 = FlatPage.objects.create(
|
|
|
78
|
+ title='title2', url='/url2/',
|
|
|
79
|
+ content='other content')
|
|
105
|
80
|
|
|
106
|
|
- def test_dashboard_delete_pages(self):
|
|
107
|
|
- page = self.get(reverse('dashboard:page-list'))
|
|
108
|
|
- delete_page = page.click(linkid="delete_page_%s" % self.flatpage_1.id)
|
|
109
|
|
- response = delete_page.form.submit()
|
|
|
81
|
+ def test_doesnt_allow_existing_pages_to_be_clobbered(self):
|
|
|
82
|
+ form = PageUpdateForm(data={
|
|
|
83
|
+ 'title': 'test',
|
|
|
84
|
+ 'url': '/dashboard/pages/',
|
|
|
85
|
+ })
|
|
|
86
|
+ self.assertFalse(form.is_valid())
|
|
|
87
|
+ self.assertEqual(
|
|
|
88
|
+ form.errors['url'],
|
|
|
89
|
+ ['Specified page already exists!']
|
|
|
90
|
+ )
|
|
110
|
91
|
|
|
111
|
|
- self.assertIsRedirect(response)
|
|
112
|
|
- self.assertEqual(FlatPage.objects.count(), 1)
|
|
|
92
|
+ def test_allows_page_to_be_created(self):
|
|
|
93
|
+ form = PageUpdateForm(data={
|
|
|
94
|
+ 'title': 'test',
|
|
|
95
|
+ 'url': '/my-new-url/',
|
|
|
96
|
+ 'content': 'my content here'
|
|
|
97
|
+ })
|
|
|
98
|
+
|
|
|
99
|
+ self.assertTrue(form.is_valid())
|
|
|
100
|
+ form.save()
|
|
|
101
|
+ self.assertEqual(FlatPage.objects.count(), 3)
|
|
|
102
|
+
|
|
|
103
|
+ def test_create_page_with_slugified_url(self):
|
|
|
104
|
+ form = PageUpdateForm(data={
|
|
|
105
|
+ 'title': 'test',
|
|
|
106
|
+ 'content': 'my content here'
|
|
|
107
|
+ })
|
|
|
108
|
+
|
|
|
109
|
+ self.assertTrue(form.is_valid())
|
|
|
110
|
+ form.save()
|
|
|
111
|
+ self.assertEqual(FlatPage.objects.count(), 3)
|
|
|
112
|
+
|
|
|
113
|
+ def test_create_page_with_existing_url_does_not_work(self):
|
|
|
114
|
+ form = PageUpdateForm(data={
|
|
|
115
|
+ 'title': 'test',
|
|
|
116
|
+ 'url': '/url1/', # already exists
|
|
|
117
|
+ 'content': 'my content here'
|
|
|
118
|
+ })
|
|
|
119
|
+
|
|
|
120
|
+ self.assertFalse(form.is_valid())
|
|
|
121
|
+ self.assertEqual(
|
|
|
122
|
+ form.errors['url'],
|
|
|
123
|
+ ['Specified page already exists!']
|
|
|
124
|
+ )
|
|
|
125
|
+
|
|
|
126
|
+ def test_update_page_valid_url(self):
|
|
|
127
|
+ form = PageUpdateForm(instance=self.flatpage_1, data={
|
|
|
128
|
+ 'title': 'test',
|
|
|
129
|
+ 'url': '/new/url/',
|
|
|
130
|
+ 'content': 'my content here'
|
|
|
131
|
+ })
|
|
|
132
|
+
|
|
|
133
|
+ form.save()
|
|
|
134
|
+
|
|
|
135
|
+ self.flatpage_1.refresh_from_db()
|
|
|
136
|
+ page = self.flatpage_1
|
|
|
137
|
+ self.assertEqual(page.title, 'test')
|
|
|
138
|
+ self.assertEqual(page.url, '/new/url/')
|
|
|
139
|
+ self.assertEqual(page.content, "my content here")
|
|
|
140
|
+
|
|
|
141
|
+ def test_invalid_chars_in_url(self):
|
|
|
142
|
+ form = PageUpdateForm(data={
|
|
|
143
|
+ 'url': '/%* /',
|
|
|
144
|
+ 'title': 'Title',
|
|
|
145
|
+ 'content': 'Content',
|
|
|
146
|
+ })
|
|
|
147
|
+
|
|
|
148
|
+ self.assertFalse(form.is_valid())
|
|
|
149
|
+ self.assertEqual(
|
|
|
150
|
+ form.errors['url'],
|
|
|
151
|
+ ['This value must contain only letters, numbers, dots, underscores, dashes, slashes or tildes.']
|
|
|
152
|
+ )
|
|
|
153
|
+
|
|
|
154
|
+ def test_invalid_url_length(self):
|
|
|
155
|
+ form = PageUpdateForm(data={
|
|
|
156
|
+ 'url': '/this_url_is_more_than_100_characters_long_which_is_invalid'
|
|
|
157
|
+ '_because_the_model_field_has_a_max_length_of_100',
|
|
|
158
|
+ 'title': 'Title',
|
|
|
159
|
+ 'content': 'Content',
|
|
|
160
|
+ })
|
|
|
161
|
+
|
|
|
162
|
+ self.assertFalse(form.is_valid())
|
|
|
163
|
+ self.assertEqual(
|
|
|
164
|
+ form.errors['url'],
|
|
|
165
|
+ ['Ensure this value has at most 100 characters (it has 107).']
|
|
|
166
|
+ )
|