summaryrefslogtreecommitdiff
path: root/tests/template_tests/test_engine.py
diff options
context:
space:
mode:
authorPreston Timmons <prestontimmons@gmail.com>2015-02-18 15:51:05 -0600
committerAymeric Augustin <aymeric.augustin@oscaro.com>2015-02-24 14:00:02 +0100
commit1827aa902481cd80d2fb154e7b073f139936d5fc (patch)
treeb9318b6fd81eeea3993e96a1c2719b8613fca012 /tests/template_tests/test_engine.py
parent2be6b526568aaaae5353a4a600a085d3c2135363 (diff)
Cleaned up template loader tests.
Diffstat (limited to 'tests/template_tests/test_engine.py')
-rw-r--r--tests/template_tests/test_engine.py125
1 files changed, 125 insertions, 0 deletions
diff --git a/tests/template_tests/test_engine.py b/tests/template_tests/test_engine.py
new file mode 100644
index 0000000000..77f3c995b5
--- /dev/null
+++ b/tests/template_tests/test_engine.py
@@ -0,0 +1,125 @@
+import os
+
+from django.template import Context
+from django.template.engine import Engine
+from django.test import SimpleTestCase, ignore_warnings
+from django.utils.deprecation import RemovedInDjango20Warning
+
+from .utils import ROOT, TEMPLATE_DIR
+
+OTHER_DIR = os.path.join(ROOT, 'other_templates')
+
+
+@ignore_warnings(category=RemovedInDjango20Warning)
+class DeprecatedRenderToStringTest(SimpleTestCase):
+
+ def setUp(self):
+ self.engine = Engine(dirs=[TEMPLATE_DIR])
+
+ def test_basic_context(self):
+ self.assertEqual(
+ self.engine.render_to_string('test_context.html', {'obj': 'test'}),
+ 'obj:test\n',
+ )
+
+ def test_existing_context_kept_clean(self):
+ context = Context({'obj': 'before'})
+ output = self.engine.render_to_string(
+ 'test_context.html', {'obj': 'after'}, context_instance=context,
+ )
+ self.assertEqual(output, 'obj:after\n')
+ self.assertEqual(context['obj'], 'before')
+
+ def test_no_empty_dict_pushed_to_stack(self):
+ """
+ #21741 -- An empty dict should not be pushed to the context stack when
+ render_to_string is called without a context argument.
+ """
+
+ # The stack should have a length of 1, corresponding to the builtins
+ self.assertEqual(
+ '1',
+ self.engine.render_to_string('test_context_stack.html').strip(),
+ )
+ self.assertEqual(
+ '1',
+ self.engine.render_to_string(
+ 'test_context_stack.html',
+ context_instance=Context()
+ ).strip(),
+ )
+
+
+class LoaderTests(SimpleTestCase):
+
+ def test_debug_nodelist_name(self):
+ engine = Engine(dirs=[TEMPLATE_DIR], debug=True)
+ template_name = 'index.html'
+ template = engine.get_template(template_name)
+ name = template.nodelist[0].source[0].name
+ self.assertTrue(name.endswith(template_name))
+
+ def test_origin(self):
+ engine = Engine(dirs=[TEMPLATE_DIR], debug=True)
+ template = engine.get_template('index.html')
+ self.assertEqual(template.origin.loadname, 'index.html')
+
+ def test_origin_debug_false(self):
+ engine = Engine(dirs=[TEMPLATE_DIR], debug=False)
+ template = engine.get_template('index.html')
+ self.assertEqual(template.origin, None)
+
+ def test_loader_priority(self):
+ """
+ #21460 -- Check that the order of template loader works.
+ """
+ loaders = [
+ 'django.template.loaders.filesystem.Loader',
+ 'django.template.loaders.app_directories.Loader',
+ ]
+ engine = Engine(dirs=[OTHER_DIR, TEMPLATE_DIR], loaders=loaders)
+ template = engine.get_template('priority/foo.html')
+ self.assertEqual(template.render(Context()), 'priority\n')
+
+ def test_cached_loader_priority(self):
+ """
+ Check that the order of template loader works. Refs #21460.
+ """
+ loaders = [
+ ('django.template.loaders.cached.Loader', [
+ 'django.template.loaders.filesystem.Loader',
+ 'django.template.loaders.app_directories.Loader',
+ ]),
+ ]
+ engine = Engine(dirs=[OTHER_DIR, TEMPLATE_DIR], loaders=loaders)
+
+ template = engine.get_template('priority/foo.html')
+ self.assertEqual(template.render(Context()), 'priority\n')
+
+ template = engine.get_template('priority/foo.html')
+ self.assertEqual(template.render(Context()), 'priority\n')
+
+
+@ignore_warnings(category=RemovedInDjango20Warning)
+class TemplateDirsOverrideTests(SimpleTestCase):
+ DIRS = ((OTHER_DIR, ), [OTHER_DIR])
+
+ def setUp(self):
+ self.engine = Engine()
+
+ def test_render_to_string(self):
+ for dirs in self.DIRS:
+ self.assertEqual(
+ self.engine.render_to_string('test_dirs.html', dirs=dirs),
+ 'spam eggs\n',
+ )
+
+ def test_get_template(self):
+ for dirs in self.DIRS:
+ template = self.engine.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:
+ template = self.engine.select_template(['test_dirs.html'], dirs=dirs)
+ self.assertEqual(template.render(Context()), 'spam eggs\n')