summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2015-01-26 21:57:10 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2015-02-03 08:29:45 +0100
commit2133f3157eff853329bafb7fda74c3c8fb4eae42 (patch)
tree5bb262ab847c79b3f70d8a8888e267b2816b0373 /tests
parenta53541852d5601232899e54d66e623bc163c6dc2 (diff)
Fixed #24168 -- Allowed selecting a template engine in a few APIs.
Specifically in rendering shortcuts, template responses, and class-based views that return template responses. Also added a test for render_to_response(status=...) which was missing from fdbfc980. Thanks Tim and Carl for the review.
Diffstat (limited to 'tests')
-rw-r--r--tests/generic_views/jinja2/generic_views/using.html1
-rw-r--r--tests/generic_views/templates/generic_views/using.html1
-rw-r--r--tests/generic_views/test_base.py16
-rw-r--r--tests/shortcuts/jinja2/shortcuts/using.html1
-rw-r--r--tests/shortcuts/templates/shortcuts/using.html1
-rw-r--r--tests/shortcuts/tests.py24
-rw-r--r--tests/shortcuts/urls.py3
-rw-r--r--tests/shortcuts/views.py17
-rw-r--r--tests/template_tests/jinja2/template_tests/using.html1
-rw-r--r--tests/template_tests/templates/template_tests/using.html1
-rw-r--r--tests/template_tests/test_response.py20
11 files changed, 85 insertions, 1 deletions
diff --git a/tests/generic_views/jinja2/generic_views/using.html b/tests/generic_views/jinja2/generic_views/using.html
new file mode 100644
index 0000000000..8ce973e958
--- /dev/null
+++ b/tests/generic_views/jinja2/generic_views/using.html
@@ -0,0 +1 @@
+Jinja2
diff --git a/tests/generic_views/templates/generic_views/using.html b/tests/generic_views/templates/generic_views/using.html
new file mode 100644
index 0000000000..65bcbf65a4
--- /dev/null
+++ b/tests/generic_views/templates/generic_views/using.html
@@ -0,0 +1 @@
+DTL
diff --git a/tests/generic_views/test_base.py b/tests/generic_views/test_base.py
index 47518fdd92..f297b2e91b 100644
--- a/tests/generic_views/test_base.py
+++ b/tests/generic_views/test_base.py
@@ -7,6 +7,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import resolve
from django.http import HttpResponse
from django.test import TestCase, RequestFactory, override_settings
+from django.test.utils import require_jinja2
from django.views.generic import View, TemplateView, RedirectView
from . import views
@@ -278,10 +279,23 @@ class TemplateViewTest(TestCase):
def test_template_name_required(self):
"""
- A template view must provide a template name
+ A template view must provide a template name.
"""
self.assertRaises(ImproperlyConfigured, self.client.get, '/template/no_template/')
+ @require_jinja2
+ def test_template_engine(self):
+ """
+ A template view may provide a template engine.
+ """
+ request = self.rf.get('/using/')
+ view = TemplateView.as_view(template_name='generic_views/using.html')
+ self.assertEqual(view(request).render().content, b'DTL\n')
+ view = TemplateView.as_view(template_name='generic_views/using.html', template_engine='django')
+ self.assertEqual(view(request).render().content, b'DTL\n')
+ view = TemplateView.as_view(template_name='generic_views/using.html', template_engine='jinja2')
+ self.assertEqual(view(request).render().content, b'Jinja2\n')
+
def test_template_params(self):
"""
A generic template view passes kwargs as context.
diff --git a/tests/shortcuts/jinja2/shortcuts/using.html b/tests/shortcuts/jinja2/shortcuts/using.html
new file mode 100644
index 0000000000..8ce973e958
--- /dev/null
+++ b/tests/shortcuts/jinja2/shortcuts/using.html
@@ -0,0 +1 @@
+Jinja2
diff --git a/tests/shortcuts/templates/shortcuts/using.html b/tests/shortcuts/templates/shortcuts/using.html
new file mode 100644
index 0000000000..65bcbf65a4
--- /dev/null
+++ b/tests/shortcuts/templates/shortcuts/using.html
@@ -0,0 +1 @@
+DTL
diff --git a/tests/shortcuts/tests.py b/tests/shortcuts/tests.py
index e22cf4d386..98251244c5 100644
--- a/tests/shortcuts/tests.py
+++ b/tests/shortcuts/tests.py
@@ -1,5 +1,6 @@
from django.utils.deprecation import RemovedInDjango20Warning
from django.test import TestCase, ignore_warnings, override_settings
+from django.test.utils import require_jinja2
@override_settings(
@@ -38,6 +39,20 @@ class ShortcutTests(TestCase):
self.assertEqual(response.content, b'spam eggs\n')
self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
+ def test_render_to_response_with_status(self):
+ response = self.client.get('/render_to_response/status/')
+ self.assertEqual(response.status_code, 403)
+ self.assertEqual(response.content, b'FOO.BAR..\n')
+
+ @require_jinja2
+ def test_render_to_response_with_using(self):
+ response = self.client.get('/render_to_response/using/')
+ self.assertEqual(response.content, b'DTL\n')
+ response = self.client.get('/render_to_response/using/?using=django')
+ self.assertEqual(response.content, b'DTL\n')
+ response = self.client.get('/render_to_response/using/?using=jinja2')
+ self.assertEqual(response.content, b'Jinja2\n')
+
@ignore_warnings(category=RemovedInDjango20Warning)
def test_render_to_response_with_context_instance_misuse(self):
"""
@@ -78,6 +93,15 @@ class ShortcutTests(TestCase):
self.assertEqual(response.status_code, 403)
self.assertEqual(response.content, b'FOO.BAR../render/status/\n')
+ @require_jinja2
+ def test_render_with_using(self):
+ response = self.client.get('/render/using/')
+ self.assertEqual(response.content, b'DTL\n')
+ response = self.client.get('/render/using/?using=django')
+ self.assertEqual(response.content, b'DTL\n')
+ response = self.client.get('/render/using/?using=jinja2')
+ self.assertEqual(response.content, b'Jinja2\n')
+
@ignore_warnings(category=RemovedInDjango20Warning)
def test_render_with_current_app(self):
response = self.client.get('/render/current_app/')
diff --git a/tests/shortcuts/urls.py b/tests/shortcuts/urls.py
index cbb6c99c14..449a840f73 100644
--- a/tests/shortcuts/urls.py
+++ b/tests/shortcuts/urls.py
@@ -8,6 +8,8 @@ urlpatterns = [
url(r'^render_to_response/request_context/$', views.render_to_response_view_with_request_context),
url(r'^render_to_response/content_type/$', views.render_to_response_view_with_content_type),
url(r'^render_to_response/dirs/$', views.render_to_response_view_with_dirs),
+ url(r'^render_to_response/status/$', views.render_to_response_view_with_status),
+ url(r'^render_to_response/using/$', views.render_to_response_view_with_using),
url(r'^render_to_response/context_instance_misuse/$', views.render_to_response_with_context_instance_misuse),
url(r'^render/$', views.render_view),
url(r'^render/multiple_templates/$', views.render_view_with_multiple_templates),
@@ -15,6 +17,7 @@ urlpatterns = [
url(r'^render/content_type/$', views.render_view_with_content_type),
url(r'^render/dirs/$', views.render_with_dirs),
url(r'^render/status/$', views.render_view_with_status),
+ url(r'^render/using/$', views.render_view_with_using),
url(r'^render/current_app/$', views.render_view_with_current_app),
url(r'^render/current_app_conflict/$', views.render_view_with_current_app_conflict),
]
diff --git a/tests/shortcuts/views.py b/tests/shortcuts/views.py
index 42493f3e7b..85d1922d58 100644
--- a/tests/shortcuts/views.py
+++ b/tests/shortcuts/views.py
@@ -43,6 +43,18 @@ def render_to_response_view_with_dirs(request):
return render_to_response('render_dirs_test.html', dirs=dirs)
+def render_to_response_view_with_status(request):
+ return render_to_response('shortcuts/render_test.html', {
+ 'foo': 'FOO',
+ 'bar': 'BAR',
+ }, status=403)
+
+
+def render_to_response_view_with_using(request):
+ using = request.GET.get('using')
+ return render_to_response('shortcuts/using.html', using=using)
+
+
def context_processor(request):
return {'bar': 'context processor output'}
@@ -95,6 +107,11 @@ def render_view_with_status(request):
}, status=403)
+def render_view_with_using(request):
+ using = request.GET.get('using')
+ return render(request, 'shortcuts/using.html', using=using)
+
+
def render_view_with_current_app(request):
return render(request, 'shortcuts/render_test.html', {
'foo': 'FOO',
diff --git a/tests/template_tests/jinja2/template_tests/using.html b/tests/template_tests/jinja2/template_tests/using.html
new file mode 100644
index 0000000000..8ce973e958
--- /dev/null
+++ b/tests/template_tests/jinja2/template_tests/using.html
@@ -0,0 +1 @@
+Jinja2
diff --git a/tests/template_tests/templates/template_tests/using.html b/tests/template_tests/templates/template_tests/using.html
new file mode 100644
index 0000000000..65bcbf65a4
--- /dev/null
+++ b/tests/template_tests/templates/template_tests/using.html
@@ -0,0 +1 @@
+DTL
diff --git a/tests/template_tests/test_response.py b/tests/template_tests/test_response.py
index 993b2002c8..3807789e63 100644
--- a/tests/template_tests/test_response.py
+++ b/tests/template_tests/test_response.py
@@ -11,6 +11,7 @@ from django.template import Context, engines
from django.template.response import (TemplateResponse, SimpleTemplateResponse,
ContentNotRenderedError)
from django.test import ignore_warnings, override_settings
+from django.test.utils import require_jinja2
from django.utils._os import upath
from django.utils.deprecation import RemovedInDjango20Warning
@@ -133,6 +134,15 @@ class SimpleTemplateResponseTest(SimpleTestCase):
self.assertEqual(response['content-type'], 'application/json')
self.assertEqual(response.status_code, 504)
+ @require_jinja2
+ def test_using(self):
+ response = SimpleTemplateResponse('template_tests/using.html').render()
+ self.assertEqual(response.content, b'DTL\n')
+ response = SimpleTemplateResponse('template_tests/using.html', using='django').render()
+ self.assertEqual(response.content, b'DTL\n')
+ response = SimpleTemplateResponse('template_tests/using.html', using='jinja2').render()
+ self.assertEqual(response.content, b'Jinja2\n')
+
def test_post_callbacks(self):
"Rendering a template response triggers the post-render callbacks"
post = []
@@ -260,6 +270,16 @@ class TemplateResponseTest(SimpleTestCase):
self.assertEqual(response['content-type'], 'application/json')
self.assertEqual(response.status_code, 504)
+ @require_jinja2
+ def test_using(self):
+ request = self.factory.get('/')
+ response = TemplateResponse(request, 'template_tests/using.html').render()
+ self.assertEqual(response.content, b'DTL\n')
+ response = TemplateResponse(request, 'template_tests/using.html', using='django').render()
+ self.assertEqual(response.content, b'DTL\n')
+ response = TemplateResponse(request, 'template_tests/using.html', using='jinja2').render()
+ self.assertEqual(response.content, b'Jinja2\n')
+
@ignore_warnings(category=RemovedInDjango20Warning)
def test_custom_app(self):
self._response('{{ foo }}', current_app="foobar")