PageRenderTime 53ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/cms/tests/page.py

https://github.com/vden/RatingSite
Python | 188 lines | 125 code | 29 blank | 34 comment | 8 complexity | 41a35691734e06fae6e35d03a3a7262d MD5 | raw file
Possible License(s): GPL-3.0
  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. from django.http import HttpRequest
  4. from django.template import TemplateDoesNotExist
  5. from django.contrib.auth.models import User
  6. from cms.tests.base import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD
  7. from cms.models import Page, Title
  8. class PagesTestCase(CMSTestCase):
  9. def setUp(self):
  10. u = User(username="test", is_staff = True, is_active = True, is_superuser = True)
  11. u.set_password("test")
  12. u.save()
  13. self.login_user(u)
  14. def test_01_add_page(self):
  15. """
  16. Test that the add admin page could be displayed via the admin
  17. """
  18. response = self.client.get(URL_CMS_PAGE_ADD)
  19. self.assertEqual(response.status_code, 200)
  20. def test_02_create_page(self):
  21. """
  22. Test that a page can be created via the admin
  23. """
  24. page_data = self.get_new_page_data()
  25. response = self.client.post(URL_CMS_PAGE_ADD, page_data)
  26. self.assertRedirects(response, URL_CMS_PAGE)
  27. title = Title.objects.get(slug=page_data['slug'])
  28. self.assertEqual(title is not None, True)
  29. page = title.page
  30. page.published = True
  31. page.save()
  32. self.assertEqual(page.get_title(), page_data['title'])
  33. self.assertEqual(page.get_slug(), page_data['slug'])
  34. # were public instanes created?
  35. title = Title.objects.drafts().get(slug=page_data['slug'])
  36. def test_03_slug_collision(self):
  37. """
  38. Test a slug collision
  39. """
  40. page_data = self.get_new_page_data()
  41. # create first page
  42. response = self.client.post(URL_CMS_PAGE_ADD, page_data)
  43. self.assertRedirects(response, URL_CMS_PAGE)
  44. #page1 = Title.objects.get(slug=page_data['slug']).page
  45. # create page with the same page_data
  46. response = self.client.post(URL_CMS_PAGE_ADD, page_data)
  47. if settings.i18n_installed:
  48. self.assertEqual(response.status_code, 302)
  49. # did we got right redirect?
  50. self.assertEqual(response['Location'].endswith(URL_CMS_PAGE), True)
  51. else:
  52. self.assertEqual(response.status_code, 200)
  53. self.assertEqual(response['Location'].endswith(URL_CMS_PAGE_ADD), True)
  54. # TODO: check for slug collisions after move
  55. # TODO: check for slug collisions with different settings
  56. def test_04_details_view(self):
  57. """
  58. Test the details view
  59. """
  60. try:
  61. response = self.client.get('/')
  62. except TemplateDoesNotExist, e:
  63. if e.args != ('404.html',):
  64. raise
  65. page_data = self.get_new_page_data()
  66. page_data['published'] = False
  67. response = self.client.post(URL_CMS_PAGE_ADD, page_data)
  68. try:
  69. response = self.client.get('/')
  70. except TemplateDoesNotExist, e:
  71. if e.args != ('404.html',):
  72. raise
  73. page_data = self.get_new_page_data()
  74. page_data['published'] = True
  75. page_data['slug'] = 'test-page-2'
  76. response = self.client.post(URL_CMS_PAGE_ADD, page_data)
  77. response = self.client.get(URL_CMS_PAGE)
  78. response = self.client.get('/')
  79. self.assertEqual(response.status_code, 200)
  80. def test_05_edit_page(self):
  81. """
  82. Test that a page can edited via the admin
  83. """
  84. page_data = self.get_new_page_data()
  85. response = self.client.post(URL_CMS_PAGE_ADD, page_data)
  86. response = self.client.get('/admin/cms/page/1/')
  87. self.assertEqual(response.status_code, 200)
  88. page_data['title'] = 'changed title'
  89. response = self.client.post('/admin/cms/page/1/', page_data)
  90. self.assertRedirects(response, URL_CMS_PAGE)
  91. page = Page.objects.get(id=1)
  92. self.assertEqual(page.get_title(), 'changed title')
  93. def test_06_meta_description_and_keywords_fields_from_admin(self):
  94. """
  95. Test that description and keywords tags can be set via the admin
  96. """
  97. page_data = self.get_new_page_data()
  98. page_data["meta_description"] = "I am a page"
  99. page_data["meta_keywords"] = "page,cms,stuff"
  100. response = self.client.post(URL_CMS_PAGE_ADD, page_data)
  101. response = self.client.get('/admin/cms/page/1/')
  102. self.assertEqual(response.status_code, 200)
  103. page_data['meta_description'] = 'I am a duck'
  104. response = self.client.post('/admin/cms/page/1/', page_data)
  105. self.assertRedirects(response, URL_CMS_PAGE)
  106. page = Page.objects.get(id=1)
  107. self.assertEqual(page.get_meta_description(), 'I am a duck')
  108. self.assertEqual(page.get_meta_keywords(), 'page,cms,stuff')
  109. def test_07_meta_description_and_keywords_from_template_tags(self):
  110. from django import template
  111. page_data = self.get_new_page_data()
  112. page_data["title"] = "Hello"
  113. page_data["meta_description"] = "I am a page"
  114. page_data["meta_keywords"] = "page,cms,stuff"
  115. self.client.post(URL_CMS_PAGE_ADD, page_data)
  116. self.client.post('/admin/cms/page/1/', page_data)
  117. t = template.Template("{% load cms_tags %}{% page_attribute title %} {% page_attribute meta_description %} {% page_attribute meta_keywords %}")
  118. req = HttpRequest()
  119. page = Page.objects.get(id=1)
  120. page.published = True
  121. page.save()
  122. req.current_page = page
  123. req.REQUEST = {}
  124. self.assertEqual(t.render(template.Context({"request": req})), "Hello I am a page page,cms,stuff")
  125. def test_08_copy_page(self):
  126. """
  127. Test that a page can be copied via the admin
  128. """
  129. page_a = self.create_page()
  130. page_a_a = self.create_page(page_a)
  131. page_a_a_a = self.create_page(page_a_a)
  132. page_b = self.create_page()
  133. page_b_a = self.create_page(page_b)
  134. count = Page.objects.drafts().count()
  135. self.copy_page(page_a, page_b_a)
  136. self.assertEqual(Page.objects.drafts().count() - count, 3)
  137. def test_9_language_change(self):
  138. page_data = self.get_new_page_data()
  139. self.client.post(URL_CMS_PAGE_ADD, page_data)
  140. pk = Page.objects.all()[0].pk
  141. response = self.client.get("/admin/cms/page/%s/" % pk, {"language":"en" })
  142. self.assertEqual(response.status_code, 200)
  143. response = self.client.get("/admin/cms/page/%s/" % pk, {"language":"de" })
  144. self.assertEqual(response.status_code, 200)
  145. """
  146. This is not a valid test, please write correct tests, which work, this must
  147. create at lest 2 language mutations of page before delete
  148. def test_11_language_delete(self):
  149. self.client.login(username= 'test', password='test')
  150. setattr(settings, "SITE_ID", 1)
  151. page_data = self.get_new_page_data()
  152. self.client.post('/admin/cms/page/add/', page_data)
  153. pk = Page.objects.all()[0].pk
  154. response = self.client.get("/admin/cms/page/%s/delete-translation/" % pk, {"language":"en" })
  155. self.assertEqual(response.status_code, 200)
  156. response = self.client.post("/admin/cms/page/%s/delete-translation/" % pk, {"language":"en" })
  157. self.assertEqual(response.status_code, 302)
  158. """