diff options
| author | Preston Timmons <prestontimmons@gmail.com> | 2015-02-18 15:51:05 -0600 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@oscaro.com> | 2015-02-24 14:00:02 +0100 |
| commit | 1827aa902481cd80d2fb154e7b073f139936d5fc (patch) | |
| tree | b9318b6fd81eeea3993e96a1c2719b8613fca012 /tests/template_tests/test_engine.py | |
| parent | 2be6b526568aaaae5353a4a600a085d3c2135363 (diff) | |
Cleaned up template loader tests.
Diffstat (limited to 'tests/template_tests/test_engine.py')
| -rw-r--r-- | tests/template_tests/test_engine.py | 125 |
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') |
