tests.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from django.http.response import HttpResponseRedirectBase
  2. from django.shortcuts import redirect
  3. from django.test import SimpleTestCase, override_settings
  4. from django.test.utils import require_jinja2
  5. @override_settings(ROOT_URLCONF="shortcuts.urls")
  6. class RenderTests(SimpleTestCase):
  7. def test_render(self):
  8. response = self.client.get("/render/")
  9. self.assertEqual(response.status_code, 200)
  10. self.assertEqual(response.content, b"FOO.BAR../render/\n")
  11. self.assertEqual(response.headers["Content-Type"], "text/html; charset=utf-8")
  12. self.assertFalse(hasattr(response.context.request, "current_app"))
  13. def test_render_with_multiple_templates(self):
  14. response = self.client.get("/render/multiple_templates/")
  15. self.assertEqual(response.status_code, 200)
  16. self.assertEqual(response.content, b"FOO.BAR../render/multiple_templates/\n")
  17. def test_render_with_content_type(self):
  18. response = self.client.get("/render/content_type/")
  19. self.assertEqual(response.status_code, 200)
  20. self.assertEqual(response.content, b"FOO.BAR../render/content_type/\n")
  21. self.assertEqual(response.headers["Content-Type"], "application/x-rendertest")
  22. def test_render_with_status(self):
  23. response = self.client.get("/render/status/")
  24. self.assertEqual(response.status_code, 403)
  25. self.assertEqual(response.content, b"FOO.BAR../render/status/\n")
  26. @require_jinja2
  27. def test_render_with_using(self):
  28. response = self.client.get("/render/using/")
  29. self.assertEqual(response.content, b"DTL\n")
  30. response = self.client.get("/render/using/?using=django")
  31. self.assertEqual(response.content, b"DTL\n")
  32. response = self.client.get("/render/using/?using=jinja2")
  33. self.assertEqual(response.content, b"Jinja2\n")
  34. class RedirectTests(SimpleTestCase):
  35. def test_redirect_response_status_code(self):
  36. tests = [
  37. (True, False, 301),
  38. (False, False, 302),
  39. (False, True, 307),
  40. (True, True, 308),
  41. ]
  42. for permanent, preserve_request, expected_status_code in tests:
  43. with self.subTest(permanent=permanent, preserve_request=preserve_request):
  44. response = redirect(
  45. "/path/is/irrelevant/",
  46. permanent=permanent,
  47. preserve_request=preserve_request,
  48. )
  49. self.assertIsInstance(response, HttpResponseRedirectBase)
  50. self.assertEqual(response.status_code, expected_status_code)