tests.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. from django.test import SimpleTestCase, ignore_warnings, override_settings
  2. from django.test.utils import require_jinja2
  3. from django.utils.deprecation import RemovedInDjango110Warning
  4. @override_settings(
  5. ROOT_URLCONF='shortcuts.urls',
  6. )
  7. class ShortcutTests(SimpleTestCase):
  8. def test_render_to_response(self):
  9. response = self.client.get('/render_to_response/')
  10. self.assertEqual(response.status_code, 200)
  11. self.assertEqual(response.content, b'FOO.BAR..\n')
  12. self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
  13. def test_render_to_response_with_multiple_templates(self):
  14. response = self.client.get('/render_to_response/multiple_templates/')
  15. self.assertEqual(response.status_code, 200)
  16. self.assertEqual(response.content, b'FOO.BAR..\n')
  17. @ignore_warnings(category=RemovedInDjango110Warning)
  18. def test_render_to_response_with_request_context(self):
  19. response = self.client.get('/render_to_response/request_context/')
  20. self.assertEqual(response.status_code, 200)
  21. self.assertEqual(response.content, b'FOO.BAR../render_to_response/request_context/\n')
  22. self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
  23. def test_render_to_response_with_content_type(self):
  24. response = self.client.get('/render_to_response/content_type/')
  25. self.assertEqual(response.status_code, 200)
  26. self.assertEqual(response.content, b'FOO.BAR..\n')
  27. self.assertEqual(response['Content-Type'], 'application/x-rendertest')
  28. @ignore_warnings(category=RemovedInDjango110Warning)
  29. def test_render_to_response_with_dirs(self):
  30. response = self.client.get('/render_to_response/dirs/')
  31. self.assertEqual(response.status_code, 200)
  32. self.assertEqual(response.content, b'spam eggs\n')
  33. self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
  34. def test_render_to_response_with_status(self):
  35. response = self.client.get('/render_to_response/status/')
  36. self.assertEqual(response.status_code, 403)
  37. self.assertEqual(response.content, b'FOO.BAR..\n')
  38. @require_jinja2
  39. def test_render_to_response_with_using(self):
  40. response = self.client.get('/render_to_response/using/')
  41. self.assertEqual(response.content, b'DTL\n')
  42. response = self.client.get('/render_to_response/using/?using=django')
  43. self.assertEqual(response.content, b'DTL\n')
  44. response = self.client.get('/render_to_response/using/?using=jinja2')
  45. self.assertEqual(response.content, b'Jinja2\n')
  46. @ignore_warnings(category=RemovedInDjango110Warning)
  47. def test_render_to_response_with_context_instance_misuse(self):
  48. """
  49. For backwards-compatibility, ensure that it's possible to pass a
  50. RequestContext instance in the dictionary argument instead of the
  51. context_instance argument.
  52. """
  53. response = self.client.get('/render_to_response/context_instance_misuse/')
  54. self.assertContains(response, 'context processor output')
  55. def test_render(self):
  56. response = self.client.get('/render/')
  57. self.assertEqual(response.status_code, 200)
  58. self.assertEqual(response.content, b'FOO.BAR../render/\n')
  59. self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
  60. self.assertFalse(hasattr(response.context.request, 'current_app'))
  61. def test_render_with_multiple_templates(self):
  62. response = self.client.get('/render/multiple_templates/')
  63. self.assertEqual(response.status_code, 200)
  64. self.assertEqual(response.content, b'FOO.BAR../render/multiple_templates/\n')
  65. @ignore_warnings(category=RemovedInDjango110Warning)
  66. def test_render_with_base_context(self):
  67. response = self.client.get('/render/base_context/')
  68. self.assertEqual(response.status_code, 200)
  69. self.assertEqual(response.content, b'FOO.BAR..\n')
  70. self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
  71. def test_render_with_content_type(self):
  72. response = self.client.get('/render/content_type/')
  73. self.assertEqual(response.status_code, 200)
  74. self.assertEqual(response.content, b'FOO.BAR../render/content_type/\n')
  75. self.assertEqual(response['Content-Type'], 'application/x-rendertest')
  76. def test_render_with_status(self):
  77. response = self.client.get('/render/status/')
  78. self.assertEqual(response.status_code, 403)
  79. self.assertEqual(response.content, b'FOO.BAR../render/status/\n')
  80. @require_jinja2
  81. def test_render_with_using(self):
  82. response = self.client.get('/render/using/')
  83. self.assertEqual(response.content, b'DTL\n')
  84. response = self.client.get('/render/using/?using=django')
  85. self.assertEqual(response.content, b'DTL\n')
  86. response = self.client.get('/render/using/?using=jinja2')
  87. self.assertEqual(response.content, b'Jinja2\n')
  88. @ignore_warnings(category=RemovedInDjango110Warning)
  89. def test_render_with_current_app(self):
  90. response = self.client.get('/render/current_app/')
  91. self.assertEqual(response.context.request.current_app, "foobar_app")
  92. @ignore_warnings(category=RemovedInDjango110Warning)
  93. def test_render_with_dirs(self):
  94. response = self.client.get('/render/dirs/')
  95. self.assertEqual(response.status_code, 200)
  96. self.assertEqual(response.content, b'spam eggs\n')
  97. self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
  98. @ignore_warnings(category=RemovedInDjango110Warning)
  99. def test_render_with_current_app_conflict(self):
  100. with self.assertRaises(ValueError):
  101. self.client.get('/render/current_app_conflict/')