You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. from django.core.urlresolvers import reverse
  2. from django.contrib.flatpages.models import FlatPage
  3. from oscar.test.testcases import ClientTestCase
  4. class PageViewTests(ClientTestCase):
  5. is_anonymous = False
  6. is_staff = True
  7. def setUp(self):
  8. self.flatpage_1 = FlatPage.objects.create(title='title1', url='/url1/',
  9. content='some content')
  10. self.flatpage_2 = FlatPage.objects.create(title='title2', url='/url2/',
  11. content='other content')
  12. super(PageViewTests, self).setUp()
  13. def test_dashboard_index_is_for_staff_only(self):
  14. response = self.client.get(reverse('dashboard:page-list'))
  15. self.assertTrue('Password' not in response.content.decode('utf8'))
  16. def test_dashboard_page_list(self):
  17. response = self.client.get(reverse('dashboard:page-list'))
  18. objects = response.context[-1]['object_list']
  19. self.assertTrue(self.flatpage_1 in objects)
  20. self.assertTrue(self.flatpage_2 in objects)
  21. def test_dashboard_create_page_with_existing_url(self):
  22. self.assertEqual(FlatPage.objects.count(), 2)
  23. self.client.post('/dashboard/pages/', data={
  24. 'title': 'test',
  25. 'url': '/dashboard/pages/',
  26. }, follow=True)
  27. # Only the two existing flatpages should be saved.
  28. self.assertEqual(FlatPage.objects.count(), 2)
  29. def test_dashboard_create_page_with_custom_url(self):
  30. self.assertEqual(FlatPage.objects.count(), 2)
  31. self.client.post('/dashboard/pages/create/', data={
  32. 'title': 'Test Page',
  33. 'url': '/test/page/',
  34. 'content': "<h1> Content </h1>"
  35. }, follow=True)
  36. self.assertEqual(FlatPage.objects.count(), 3)
  37. page = FlatPage.objects.get(pk=3)
  38. self.assertEqual(page.title, 'Test Page')
  39. self.assertEqual(page.url, '/test/page/')
  40. self.assertEqual(page.content, "<h1> Content </h1>")
  41. self.assertEqual(page.sites.count(), 1)
  42. def test_dashboard_create_page_with_slugified_url(self):
  43. self.assertEqual(FlatPage.objects.count(), 2)
  44. self.client.post('/dashboard/pages/create/', data={
  45. 'title': 'New Page', 'content': ""
  46. }, follow=True)
  47. self.assertEqual(FlatPage.objects.count(), 3)
  48. page = FlatPage.objects.get(pk=3)
  49. self.assertEqual(page.title, 'New Page')
  50. self.assertEqual(page.url, '/new-page/')
  51. self.assertEqual(page.content, "")
  52. self.assertEqual(page.sites.count(), 1)
  53. def test_dashboard_create_page_with_exisiting_url_does_not_work(self):
  54. self.assertEqual(FlatPage.objects.count(), 2)
  55. self.client.post('/dashboard/pages/create/', data={
  56. 'title': 'New Page', 'content': ""
  57. }, follow=True)
  58. self.client.post('/dashboard/pages/create/', data={
  59. 'title': 'New Page', 'content': ""
  60. }, follow=True)
  61. self.assertEqual(FlatPage.objects.count(), 3)
  62. def test_dashboard_update_page_valid_url(self):
  63. self.client.post('/dashboard/pages/update/1/', data={
  64. 'title': 'Test Page',
  65. 'url': '/test/page/',
  66. 'content': "<h1> Content </h1>"
  67. }, follow=True)
  68. self.assertEqual(FlatPage.objects.count(), 2)
  69. page = FlatPage.objects.get(pk=1)
  70. self.assertEqual(page.title, 'Test Page')
  71. self.assertEqual(page.url, '/test/page/')
  72. self.assertEqual(page.content, "<h1> Content </h1>")
  73. self.assertEqual(page.sites.count(), 1)
  74. def test_dashboard_update_page_invalid_url(self):
  75. self.assertEqual(self.flatpage_1.title, 'title1')
  76. self.client.post('/dashboard/pages/update/1/', data={
  77. 'title': 'Test Page',
  78. 'url': '/url2/',
  79. 'content': "<h1> Content </h1>"
  80. }, follow=True)
  81. self.assertEqual(FlatPage.objects.count(), 2)
  82. page = FlatPage.objects.get(pk=1)
  83. self.assertEqual(page.title, 'title1')
  84. self.assertEqual(page.url, '/url1/')
  85. self.assertEqual(page.content, "some content")
  86. def test_dashboard_update_page_valid_url_unchanged(self):
  87. self.client.post('/dashboard/pages/update/1/', data={
  88. 'title': 'Test Page',
  89. 'url': '/url1/',
  90. 'content': "<h1> Content </h1>"
  91. }, follow=True)
  92. self.assertEqual(FlatPage.objects.count(), 2)
  93. page = FlatPage.objects.get(pk=1)
  94. self.assertEqual(page.title, 'Test Page')
  95. self.assertEqual(page.url, '/url1/')
  96. self.assertEqual(page.content, "<h1> Content </h1>")
  97. # now only update the URL
  98. self.client.post('/dashboard/pages/update/1/', data={
  99. 'title': 'Test Page',
  100. 'url': '/new/url/',
  101. 'content': "<h1> Content </h1>"
  102. }, follow=True)
  103. self.assertEqual(FlatPage.objects.count(), 2)
  104. page = FlatPage.objects.get(pk=1)
  105. self.assertEqual(page.title, 'Test Page')
  106. self.assertEqual(page.url, '/new/url/')
  107. self.assertEqual(page.content, "<h1> Content </h1>")
  108. def test_dashboard_delete_pages(self):
  109. self.client.post('/dashboard/pages/delete/1/', follow=True)
  110. self.assertEqual(FlatPage.objects.count(), 1)
  111. page = FlatPage.objects.get(pk=2)
  112. self.assertEqual(page.title, 'title2')
  113. self.assertEqual(page.url, '/url2/')
  114. self.assertEqual(page.content, "other content")