/django/contrib/flatpages/tests/templatetags.py

https://code.google.com/p/mango-py/ · Python · 134 lines · 121 code · 13 blank · 0 comment · 1 complexity · 0aa31653cdfdd9fc3fd888fd90b51246 MD5 · raw file

  1. import os
  2. from django.conf import settings
  3. from django.contrib.auth.models import AnonymousUser, User
  4. from django.template import Template, Context, TemplateSyntaxError
  5. from django.test import TestCase
  6. class FlatpageTemplateTagTests(TestCase):
  7. fixtures = ['sample_flatpages']
  8. urls = 'django.contrib.flatpages.tests.urls'
  9. def setUp(self):
  10. self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES
  11. flatpage_middleware_class = 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
  12. if flatpage_middleware_class not in settings.MIDDLEWARE_CLASSES:
  13. settings.MIDDLEWARE_CLASSES += (flatpage_middleware_class,)
  14. self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
  15. settings.TEMPLATE_DIRS = (
  16. os.path.join(
  17. os.path.dirname(__file__),
  18. 'templates'
  19. ),
  20. )
  21. self.me = User.objects.create_user('testuser', 'test@example.com', 's3krit')
  22. def tearDown(self):
  23. settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES
  24. settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS
  25. def test_get_flatpages_tag(self):
  26. "The flatpage template tag retrives unregistered prefixed flatpages by default"
  27. out = Template(
  28. "{% load flatpages %}"
  29. "{% get_flatpages as flatpages %}"
  30. "{% for page in flatpages %}"
  31. "{{ page.title }},"
  32. "{% endfor %}"
  33. ).render(Context())
  34. self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
  35. def test_get_flatpages_tag_for_anon_user(self):
  36. "The flatpage template tag retrives unregistered flatpages for an anonymous user"
  37. out = Template(
  38. "{% load flatpages %}"
  39. "{% get_flatpages for anonuser as flatpages %}"
  40. "{% for page in flatpages %}"
  41. "{{ page.title }},"
  42. "{% endfor %}"
  43. ).render(Context({
  44. 'anonuser': AnonymousUser()
  45. }))
  46. self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
  47. def test_get_flatpages_tag_for_user(self):
  48. "The flatpage template tag retrives all flatpages for an authenticated user"
  49. out = Template(
  50. "{% load flatpages %}"
  51. "{% get_flatpages for me as flatpages %}"
  52. "{% for page in flatpages %}"
  53. "{{ page.title }},"
  54. "{% endfor %}"
  55. ).render(Context({
  56. 'me': self.me
  57. }))
  58. self.assertEqual(out, "A Flatpage,A Nested Flatpage,Sekrit Nested Flatpage,Sekrit Flatpage,")
  59. def test_get_flatpages_with_prefix(self):
  60. "The flatpage template tag retrives unregistered prefixed flatpages by default"
  61. out = Template(
  62. "{% load flatpages %}"
  63. "{% get_flatpages '/location/' as location_flatpages %}"
  64. "{% for page in location_flatpages %}"
  65. "{{ page.title }},"
  66. "{% endfor %}"
  67. ).render(Context())
  68. self.assertEqual(out, "A Nested Flatpage,")
  69. def test_get_flatpages_with_prefix_for_anon_user(self):
  70. "The flatpage template tag retrives unregistered prefixed flatpages for an anonymous user"
  71. out = Template(
  72. "{% load flatpages %}"
  73. "{% get_flatpages '/location/' for anonuser as location_flatpages %}"
  74. "{% for page in location_flatpages %}"
  75. "{{ page.title }},"
  76. "{% endfor %}"
  77. ).render(Context({
  78. 'anonuser': AnonymousUser()
  79. }))
  80. self.assertEqual(out, "A Nested Flatpage,")
  81. def test_get_flatpages_with_prefix_for_user(self):
  82. "The flatpage template tag retrive prefixed flatpages for an authenticated user"
  83. out = Template(
  84. "{% load flatpages %}"
  85. "{% get_flatpages '/location/' for me as location_flatpages %}"
  86. "{% for page in location_flatpages %}"
  87. "{{ page.title }},"
  88. "{% endfor %}"
  89. ).render(Context({
  90. 'me': self.me
  91. }))
  92. self.assertEqual(out, "A Nested Flatpage,Sekrit Nested Flatpage,")
  93. def test_get_flatpages_with_variable_prefix(self):
  94. "The prefix for the flatpage template tag can be a template variable"
  95. out = Template(
  96. "{% load flatpages %}"
  97. "{% get_flatpages location_prefix as location_flatpages %}"
  98. "{% for page in location_flatpages %}"
  99. "{{ page.title }},"
  100. "{% endfor %}"
  101. ).render(Context({
  102. 'location_prefix': '/location/'
  103. }))
  104. self.assertEqual(out, "A Nested Flatpage,")
  105. def test_parsing_errors(self):
  106. "There are various ways that the flatpages template tag won't parse"
  107. render = lambda t: Template(t).render(Context())
  108. self.assertRaises(TemplateSyntaxError, render,
  109. "{% load flatpages %}{% get_flatpages %}")
  110. self.assertRaises(TemplateSyntaxError, render,
  111. "{% load flatpages %}{% get_flatpages as %}")
  112. self.assertRaises(TemplateSyntaxError, render,
  113. "{% load flatpages %}{% get_flatpages cheesecake flatpages %}")
  114. self.assertRaises(TemplateSyntaxError, render,
  115. "{% load flatpages %}{% get_flatpages as flatpages asdf%}")
  116. self.assertRaises(TemplateSyntaxError, render,
  117. "{% load flatpages %}{% get_flatpages cheesecake user as flatpages %}")
  118. self.assertRaises(TemplateSyntaxError, render,
  119. "{% load flatpages %}{% get_flatpages for user as flatpages asdf%}")
  120. self.assertRaises(TemplateSyntaxError, render,
  121. "{% load flatpages %}{% get_flatpages prefix for user as flatpages asdf%}")