summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2013-09-16 00:51:24 +0300
committerTim Graham <timograham@gmail.com>2013-09-18 07:37:08 -0400
commit2f0566fa61e13277364e3aef338fa5c143f5a704 (patch)
tree207438ec3b7983be24dc972890dda923a9f4ee45 /tests
parent893198509e3b821a56a56e4326929e0613aad983 (diff)
Fixed #4278 -- Added a dirs parameter to a few functions to override TEMPLATE_DIRS.
* django.template.loader.get_template() * django.template.loader.select_template() * django.shortcuts.render() * django.shortcuts.render_to_response() Thanks amcnabb for the suggestion.
Diffstat (limited to 'tests')
-rw-r--r--tests/template_tests/other_templates/test_dirs.html1
-rw-r--r--tests/template_tests/test_loaders.py22
-rw-r--r--tests/view_tests/generic_urls.py2
-rw-r--r--tests/view_tests/other_templates/render_dirs_test.html1
-rw-r--r--tests/view_tests/tests/test_shortcuts.py12
-rw-r--r--tests/view_tests/views.py9
6 files changed, 46 insertions, 1 deletions
diff --git a/tests/template_tests/other_templates/test_dirs.html b/tests/template_tests/other_templates/test_dirs.html
new file mode 100644
index 0000000000..d99b954618
--- /dev/null
+++ b/tests/template_tests/other_templates/test_dirs.html
@@ -0,0 +1 @@
+spam eggs{{ obj }}
diff --git a/tests/template_tests/test_loaders.py b/tests/template_tests/test_loaders.py
index 9d15b95d4b..41aa3b5826 100644
--- a/tests/template_tests/test_loaders.py
+++ b/tests/template_tests/test_loaders.py
@@ -174,8 +174,28 @@ class RenderToStringTest(unittest.TestCase):
'No template names provided$',
loader.render_to_string, [])
-
def test_select_templates_from_empty_list(self):
six.assertRaisesRegex(self, TemplateDoesNotExist,
'No template names provided$',
loader.select_template, [])
+
+
+class TemplateDirsOverrideTest(unittest.TestCase):
+
+ dirs_tuple = (os.path.join(os.path.dirname(upath(__file__)), 'other_templates'),)
+ dirs_list = list(dirs_tuple)
+ dirs_iter = (dirs_tuple, dirs_list)
+
+ def test_render_to_string(self):
+ for dirs in self.dirs_iter:
+ self.assertEqual(loader.render_to_string('test_dirs.html', dirs=dirs), 'spam eggs\n')
+
+ 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')
+
+ 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')
diff --git a/tests/view_tests/generic_urls.py b/tests/view_tests/generic_urls.py
index 10e7601eb6..a3af059e39 100644
--- a/tests/view_tests/generic_urls.py
+++ b/tests/view_tests/generic_urls.py
@@ -48,10 +48,12 @@ urlpatterns += patterns('view_tests.views',
(r'^shortcuts/render_to_response/$', 'render_to_response_view'),
(r'^shortcuts/render_to_response/request_context/$', 'render_to_response_view_with_request_context'),
(r'^shortcuts/render_to_response/content_type/$', 'render_to_response_view_with_content_type'),
+ (r'^shortcuts/render_to_response/dirs/$', 'render_to_response_view_with_dirs'),
(r'^shortcuts/render/$', 'render_view'),
(r'^shortcuts/render/base_context/$', 'render_view_with_base_context'),
(r'^shortcuts/render/content_type/$', 'render_view_with_content_type'),
(r'^shortcuts/render/status/$', 'render_view_with_status'),
(r'^shortcuts/render/current_app/$', 'render_view_with_current_app'),
+ (r'^shortcuts/render/dirs/$', 'render_with_dirs'),
(r'^shortcuts/render/current_app_conflict/$', 'render_view_with_current_app_conflict'),
)
diff --git a/tests/view_tests/other_templates/render_dirs_test.html b/tests/view_tests/other_templates/render_dirs_test.html
new file mode 100644
index 0000000000..52a6c1d3a7
--- /dev/null
+++ b/tests/view_tests/other_templates/render_dirs_test.html
@@ -0,0 +1 @@
+spam eggs
diff --git a/tests/view_tests/tests/test_shortcuts.py b/tests/view_tests/tests/test_shortcuts.py
index 74c556f41a..678eb36e3d 100644
--- a/tests/view_tests/tests/test_shortcuts.py
+++ b/tests/view_tests/tests/test_shortcuts.py
@@ -27,6 +27,12 @@ class ShortcutTests(TestCase):
self.assertEqual(response.content, b'FOO.BAR..\n')
self.assertEqual(response['Content-Type'], 'application/x-rendertest')
+ def test_render_to_response_with_dirs(self):
+ response = self.client.get('/shortcuts/render_to_response/dirs/')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, b'spam eggs\n')
+ self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
+
def test_render(self):
response = self.client.get('/shortcuts/render/')
self.assertEqual(response.status_code, 200)
@@ -55,5 +61,11 @@ class ShortcutTests(TestCase):
response = self.client.get('/shortcuts/render/current_app/')
self.assertEqual(response.context.current_app, "foobar_app")
+ def test_render_with_dirs(self):
+ response = self.client.get('/shortcuts/render/dirs/')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, b'spam eggs\n')
+ self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
+
def test_render_with_current_app_conflict(self):
self.assertRaises(ValueError, self.client.get, '/shortcuts/render/current_app_conflict/')
diff --git a/tests/view_tests/views.py b/tests/view_tests/views.py
index c21520eaa7..814931a717 100644
--- a/tests/view_tests/views.py
+++ b/tests/view_tests/views.py
@@ -1,5 +1,6 @@
from __future__ import unicode_literals
+import os
import sys
from django.core.exceptions import PermissionDenied, SuspiciousOperation
@@ -10,10 +11,12 @@ from django.template import Context, RequestContext, TemplateDoesNotExist
from django.views.debug import technical_500_response, SafeExceptionReporterFilter
from django.views.decorators.debug import (sensitive_post_parameters,
sensitive_variables)
+from django.utils._os import upath
from django.utils.log import getLogger
from . import BrokenException, except_args
+dirs = (os.path.join(os.path.dirname(upath(__file__)), 'other_templates'),)
def index_page(request):
@@ -85,6 +88,9 @@ def render_to_response_view_with_content_type(request):
'bar': 'BAR',
}, content_type='application/x-rendertest')
+def render_to_response_view_with_dirs(request):
+ return render_to_response('render_dirs_test.html', dirs=dirs)
+
def render_view(request):
return render(request, 'debug/render_test.html', {
'foo': 'FOO',
@@ -123,6 +129,9 @@ def render_view_with_current_app_conflict(request):
'bar': 'BAR',
}, current_app="foobar_app", context_instance=RequestContext(request))
+def render_with_dirs(request):
+ return render(request, 'render_dirs_test.html', dirs=dirs)
+
def raises_template_does_not_exist(request, path='i_dont_exist.html'):
# We need to inspect the HTML generated by the fancy 500 debug view but
# the test client ignores it, so we send it explicitly.