diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2015-01-08 15:03:43 +0100 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2015-01-12 21:01:34 +0100 |
| commit | a3e783fe11dd25bbf84bfb6201186566ed473506 (patch) | |
| tree | 1fe6a54ab582e54f6b1f065f2236bfe2185ce254 /tests | |
| parent | 71b7668b75d10589bbbdc7c5ca9ee7a125f91c90 (diff) | |
Deprecated passing a Context to a generic Template.render.
A deprecation path is required because the return type of
django.template.loader.get_template changed during the
multiple template engines refactor.
test_csrf_token_in_404 was incorrect: it tested the case when the
hardcoded template was rendered, and that template doesn't depend on the
CSRF token. This commit makes it test the case when a custom template is
rendered.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/template_backends/test_django.py | 21 | ||||
| -rw-r--r-- | tests/template_tests/test_loaders.py | 8 | ||||
| -rw-r--r-- | tests/template_tests/tests.py | 12 | ||||
| -rw-r--r-- | tests/view_tests/tests/test_defaults.py | 15 |
4 files changed, 42 insertions, 14 deletions
diff --git a/tests/template_backends/test_django.py b/tests/template_backends/test_django.py index f332abbf24..2aaf6b57d8 100644 --- a/tests/template_backends/test_django.py +++ b/tests/template_backends/test_django.py @@ -1,5 +1,7 @@ +from django.template import RequestContext from django.template.backends.django import DjangoTemplates -from django.test import RequestFactory +from django.test import ignore_warnings, RequestFactory +from django.utils.deprecation import RemovedInDjango20Warning from template_tests.test_response import test_processor_name @@ -32,3 +34,20 @@ class DjangoTemplatesTests(TemplateStringsTests): # Check that context overrides context processors content = template.render({'processors': 'no'}, request) self.assertEqual(content, 'no') + + @ignore_warnings(category=RemovedInDjango20Warning) + def test_request_context_conflicts_with_request(self): + template = self.engine.from_string('hello') + + request = RequestFactory().get('/') + request_context = RequestContext(request) + # This doesn't raise an exception. + template.render(request_context, request) + + other_request = RequestFactory().get('/') + msg = ("render() was called with a RequestContext and a request " + "argument which refer to different requests. Make sure " + "that the context argument is a dict or at least that " + "the two arguments refer to the same request.") + with self.assertRaisesMessage(ValueError, msg): + template.render(request_context, other_request) diff --git a/tests/template_tests/test_loaders.py b/tests/template_tests/test_loaders.py index 073e57bf67..735dbac87a 100644 --- a/tests/template_tests/test_loaders.py +++ b/tests/template_tests/test_loaders.py @@ -210,12 +210,12 @@ class TemplateDirsOverrideTest(SimpleTestCase): def test_get_template(self): for dirs in self.dirs_iter: template = loader.get_template('test_dirs.html', dirs=dirs) - self.assertEqual(template.render(Context({})), 'spam eggs\n') + self.assertEqual(template.render(), 'spam eggs\n') def test_select_template(self): for dirs in self.dirs_iter: template = loader.select_template(['test_dirs.html'], dirs=dirs) - self.assertEqual(template.render(Context({})), 'spam eggs\n') + self.assertEqual(template.render(), 'spam eggs\n') @override_settings(TEMPLATES=[{ @@ -236,7 +236,7 @@ class PriorityCacheLoader(SimpleTestCase): Check that the order of template loader works. Refs #21460. """ t1 = loader.get_template('priority/foo.html') - self.assertEqual(t1.render(Context({})), 'priority\n') + self.assertEqual(t1.render(), 'priority\n') @override_settings(TEMPLATES=[{ @@ -255,4 +255,4 @@ class PriorityLoader(SimpleTestCase): Check that the order of template loader works. Refs #21460. """ t1 = loader.get_template('priority/foo.html') - self.assertEqual(t1.render(Context({})), 'priority\n') + self.assertEqual(t1.render(), 'priority\n') diff --git a/tests/template_tests/tests.py b/tests/template_tests/tests.py index b404a83098..8b93039dca 100644 --- a/tests/template_tests/tests.py +++ b/tests/template_tests/tests.py @@ -156,7 +156,7 @@ class TemplateLoaderTests(SimpleTestCase): r = None try: tmpl = loader.select_template([load_name]) - r = tmpl.render(template.Context({})) + r = tmpl.render() except template.TemplateDoesNotExist as e: self.assertEqual(e.args[0], 'missing.html') self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r) @@ -182,7 +182,7 @@ class TemplateLoaderTests(SimpleTestCase): tmpl = loader.get_template(load_name) r = None try: - r = tmpl.render(template.Context({})) + r = tmpl.render() except template.TemplateDoesNotExist as e: self.assertEqual(e.args[0], 'missing.html') self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r) @@ -207,7 +207,7 @@ class TemplateLoaderTests(SimpleTestCase): tmpl = loader.get_template(load_name) r = None try: - r = tmpl.render(template.Context({})) + r = tmpl.render() except template.TemplateDoesNotExist as e: self.assertEqual(e.args[0], 'missing.html') self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r) @@ -216,7 +216,7 @@ class TemplateLoaderTests(SimpleTestCase): # result that behaves incorrectly on subsequent attempts. tmpl = loader.get_template(load_name) try: - tmpl.render(template.Context({})) + tmpl.render() except template.TemplateDoesNotExist as e: self.assertEqual(e.args[0], 'missing.html') self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r) @@ -262,7 +262,7 @@ class TemplateLoaderTests(SimpleTestCase): t = loader.get_template('recursive_include.html') self.assertEqual( "Recursion! A1 Recursion! B1 B2 B3 Recursion! C1", - t.render(Context({'comments': comments})).replace(' ', '').replace('\n', ' ').strip(), + t.render({'comments': comments}).replace(' ', '').replace('\n', ' ').strip(), ) @@ -400,7 +400,7 @@ class TemplateRegressionTests(SimpleTestCase): """ t = loader.get_template('included_content.html') with self.assertRaises(urlresolvers.NoReverseMatch): - t.render(Context({})) + t.render() def test_debug_tag_non_ascii(self): """ diff --git a/tests/view_tests/tests/test_defaults.py b/tests/view_tests/tests/test_defaults.py index 7b95211a5a..491e1bd562 100644 --- a/tests/view_tests/tests/test_defaults.py +++ b/tests/view_tests/tests/test_defaults.py @@ -19,6 +19,16 @@ class DefaultsTests(TestCase): response = self.client.get(url) self.assertEqual(response.status_code, 404) + @override_settings(TEMPLATES=[{ + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'OPTIONS': { + 'loaders': [ + ('django.template.loaders.locmem.Loader', { + '404.html': '{{ csrf_token }}', + }), + ], + }, + }]) def test_csrf_token_in_404(self): """ The 404 page should have the csrf_token available in the context @@ -26,9 +36,8 @@ class DefaultsTests(TestCase): # See ticket #14565 for url in self.non_existing_urls: response = self.client.get(url) - csrf_token = response.context['csrf_token'] - self.assertNotEqual(str(csrf_token), 'NOTPROVIDED') - self.assertNotEqual(str(csrf_token), '') + self.assertNotEqual(response.content, 'NOTPROVIDED') + self.assertNotEqual(response.content, '') def test_server_error(self): "The server_error view raises a 500 status" |
