blob: fb5ca733f92f61fbff4cac274210c9e9fe55ffa0 [file] [log] [blame]
Armin Ronacher93e14c22007-03-20 16:17:48 +01001# -*- coding: utf-8 -*-
2"""
3 unit test for the loaders
4 ~~~~~~~~~~~~~~~~~~~~~~~~~
5
6 :copyright: 2007 by Armin Ronacher.
7 :license: BSD, see LICENSE for more details.
8"""
9
Armin Ronacher963f97d2008-04-25 11:44:59 +020010from py.test import raises
Armin Ronacherccf284b2007-05-21 16:44:26 +020011import time
12import tempfile
Christoph Hacke9e43bb2008-04-13 23:35:48 +020013from jinja2 import Environment, loaders
14from jinja2.exceptions import TemplateNotFound
Armin Ronacher93e14c22007-03-20 16:17:48 +010015
16
17dict_loader = loaders.DictLoader({
18 'justdict.html': 'FOO'
19})
20
21package_loader = loaders.PackageLoader('loaderres', 'templates')
22
23filesystem_loader = loaders.FileSystemLoader('loaderres/templates')
24
Armin Ronacher9baa5ba2007-03-21 18:05:32 +010025function_loader = loaders.FunctionLoader({'justfunction.html': 'FOO'}.get)
26
Armin Ronacher93e14c22007-03-20 16:17:48 +010027choice_loader = loaders.ChoiceLoader([dict_loader, package_loader])
28
29
30def test_dict_loader():
31 env = Environment(loader=dict_loader)
32 tmpl = env.get_template('justdict.html')
33 assert tmpl.render().strip() == 'FOO'
34 try:
35 env.get_template('missing.html')
36 except TemplateNotFound:
37 pass
38 else:
39 raise AssertionError('expected template exception')
40
41
42def test_package_loader():
43 env = Environment(loader=package_loader)
Armin Ronacher963f97d2008-04-25 11:44:59 +020044 tmpl = env.get_template('test.html')
45 assert tmpl.render().strip() == 'BAR'
46 raises(TemplateNotFound, lambda: env.get_template('missing.html'))
Armin Ronacher93e14c22007-03-20 16:17:48 +010047
48
49def test_filesystem_loader():
50 env = Environment(loader=filesystem_loader)
51 tmpl = env.get_template('test.html')
52 assert tmpl.render().strip() == 'BAR'
Armin Ronachercb58db12007-05-30 00:05:24 +020053 tmpl = env.get_template('foo/test.html')
54 assert tmpl.render().strip() == 'FOO'
Armin Ronacher963f97d2008-04-25 11:44:59 +020055 raises(TemplateNotFound, lambda: env.get_template('missing.html'))
Armin Ronacher143a07e2007-06-02 01:47:34 +020056
57
Armin Ronacher93e14c22007-03-20 16:17:48 +010058def test_choice_loader():
59 env = Environment(loader=choice_loader)
60 tmpl = env.get_template('justdict.html')
61 assert tmpl.render().strip() == 'FOO'
62 tmpl = env.get_template('test.html')
63 assert tmpl.render().strip() == 'BAR'
64 try:
65 env.get_template('missing.html')
66 except TemplateNotFound:
67 pass
68 else:
69 raise AssertionError('expected template exception')
Armin Ronacher9baa5ba2007-03-21 18:05:32 +010070
71
72def test_function_loader():
73 env = Environment(loader=function_loader)
74 tmpl = env.get_template('justfunction.html')
75 assert tmpl.render().strip() == 'FOO'
76 try:
77 env.get_template('missing.html')
78 except TemplateNotFound:
79 pass
80 else:
81 raise AssertionError('expected template exception')