Home | History | Annotate | Download | only in tests
      1 # -*- coding: utf-8 -*-
      2 import os
      3 
      4 import webapp2
      5 from webapp2_extras import jinja2
      6 
      7 import test_base
      8 
      9 current_dir = os.path.abspath(os.path.dirname(__file__))
     10 template_path = os.path.join(current_dir, 'resources', 'jinja2_templates')
     11 compiled_path = os.path.join(current_dir, 'resources',
     12                              'jinja2_templates_compiled')
     13 
     14 class TestJinja2(test_base.BaseTestCase):
     15     def test_render_template_with_i18n(self):
     16         app = webapp2.WSGIApplication(config={
     17             'webapp2_extras.jinja2': {
     18                 'template_path': template_path,
     19                 'environment_args': {
     20                     'autoescape': True,
     21                     'extensions': [
     22                         'jinja2.ext.autoescape',
     23                         'jinja2.ext.with_',
     24                         'jinja2.ext.i18n',
     25                     ],
     26                 },
     27             },
     28         })
     29         req = webapp2.Request.blank('/')
     30         app.set_globals(app=app, request=req)
     31         j = jinja2.Jinja2(app)
     32 
     33         message = 'Hello, i18n World!'
     34         res = j.render_template('template2.html', message=message)
     35         self.assertEqual(res, message)
     36 
     37     def test_render_template_globals_filters(self):
     38         app = webapp2.WSGIApplication(config={
     39             'webapp2_extras.jinja2': {
     40                 'template_path': template_path,
     41                 'globals': dict(foo='fooglobal'),
     42                 'filters': dict(foo=lambda x: x + '-foofilter'),
     43             },
     44         })
     45         req = webapp2.Request.blank('/')
     46         app.set_globals(app=app, request=req)
     47         j = jinja2.Jinja2(app)
     48 
     49         message = 'fooglobal-foofilter'
     50         res = j.render_template('template3.html', message=message)
     51         self.assertEqual(res, message)
     52 
     53     def test_render_template_force_compiled(self):
     54         app = webapp2.WSGIApplication(config={
     55             'webapp2_extras.jinja2': {
     56                 'template_path': template_path,
     57                 'compiled_path': compiled_path,
     58                 'force_compiled': True,
     59             }
     60         })
     61         req = webapp2.Request.blank('/')
     62         app.set_globals(app=app, request=req)
     63         j = jinja2.Jinja2(app)
     64 
     65         message = 'Hello, World!'
     66         res = j.render_template('template1.html', message=message)
     67         self.assertEqual(res, message)
     68 
     69     def test_get_template_attribute(self):
     70         app = webapp2.WSGIApplication(config={
     71             'webapp2_extras.jinja2': {
     72                 'template_path': template_path,
     73             }
     74         })
     75         j = jinja2.Jinja2(app)
     76         hello = j.get_template_attribute('hello.html', 'hello')
     77         self.assertEqual(hello('World'), 'Hello, World!')
     78 
     79     def test_set_jinja2(self):
     80         app = webapp2.WSGIApplication()
     81         self.assertEqual(len(app.registry), 0)
     82         jinja2.set_jinja2(jinja2.Jinja2(app), app=app)
     83         self.assertEqual(len(app.registry), 1)
     84         j = jinja2.get_jinja2(app=app)
     85         self.assertTrue(isinstance(j, jinja2.Jinja2))
     86 
     87     def test_get_jinja2(self):
     88         app = webapp2.WSGIApplication()
     89         self.assertEqual(len(app.registry), 0)
     90         j = jinja2.get_jinja2(app=app)
     91         self.assertEqual(len(app.registry), 1)
     92         self.assertTrue(isinstance(j, jinja2.Jinja2))
     93 
     94 
     95 if __name__ == '__main__':
     96     test_base.main()
     97