| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- import os
- import tempfile
- from django.conf import settings
- from django.template import TemplateDoesNotExist, TemplateSyntaxError
- from django.test import TestCase, RequestFactory
- from mako.exceptions import SyntaxException
- from mako.template import Template as MakoTemplate
- from djangomako.backends import MakoEngine, Template, MakoBackend
- class MakoEngineTests(TestCase):
- def setUp(self):
- tmp_dir = tempfile.gettempdir()
- self.template_name = 'good_template.html'
- template_string = '<% name="Jazzar" %> My name is ${name}.'
- tmp_template = os.path.join(tmp_dir, self.template_name)
- with open(tmp_template, 'w') as f:
- f.write(template_string)
- options = {'directories': [tmp_dir]}
- self.engine = MakoEngine(**options)
- def test_get_template(self):
- template = self.engine.get_template(self.template_name)
- self.assertIsNotNone(template)
- self.assertIsInstance(template, MakoTemplate)
- def test_from_string(self):
- template_code = '1+1 = ${ value }'
- template = self.engine.from_string(template_code)
- self.assertIsNotNone(template)
- self.assertIsInstance(template, MakoTemplate)
- class TemplateStaticTests(TestCase):
- def setUp(self):
- tmp_dir = tempfile.gettempdir()
- template_name = 'good_template.html'
- self.template_string = 'My name is ${name}, and my static ' \
- 'url is ${ static(\'image.png\') }'
- tmp_template = os.path.join(tmp_dir, template_name)
- with open(tmp_template, 'w') as f:
- f.write(self.template_string)
- options = {'directories': [tmp_dir]}
- self.engine = MakoEngine(**options)
- template = self.engine.get_template(template_name)
- self.template = Template(template)
- def test_render(self):
- request_factory = RequestFactory()
- request = request_factory.get('/mako')
- context = {'name': 'Jazzar'}
- result = self.template.render(context=context, request=request)
- self.assertIn('My name is Jazzar', result)
- self.assertIn('image.png', result)
- self.assertIn(settings.STATIC_URL, result)
- class TemplateTests(TestCase):
- def setUp(self):
- tmp_dir = tempfile.gettempdir()
- template_name = 'good_template.html'
- self.template_string = 'My name is ${name}.'
- tmp_template = os.path.join(tmp_dir, template_name)
- with open(tmp_template, 'w') as f:
- f.write(self.template_string)
- options = {'directories': [tmp_dir]}
- self.engine = MakoEngine(**options)
- template = self.engine.get_template(template_name)
- self.template = Template(template)
- def test_render(self):
- request_factory = RequestFactory()
- request = request_factory.get('/mako')
- context = {'name': 'Jazzar'}
- result = self.template.render(context=context, request=request)
- self.assertEqual(result, 'My name is Jazzar.')
- def test_render_request_only(self):
- template_string = '<% name = "Jazzar" %>My name is ${ name }.'
- template = self.engine.from_string(template_string)
- template = Template(template)
- self.assertEqual(template.render(), 'My name is Jazzar.')
- def test_render_error(self):
- with self.assertRaises(NameError):
- # This should fail because the variables defined in the
- # template aren't passed in the context.
- self.template.render()
- class MakoBackendTests(TestCase):
- def setUp(self):
- self.tmp_dir = tempfile.gettempdir()
- self.template_name = 'good_template.html'
- self.bad_string = '<% name="Jazzar" My name is ${name}.'
- self.template_string = '<% name="Jazzar" %> My name is ${name}.'
- tmp_template = os.path.join(self.tmp_dir, self.template_name)
- with open(tmp_template, 'w') as f:
- f.write(self.template_string)
- parameters = {
- 'NAME': 'mako',
- 'DIRS': [self.tmp_dir],
- 'APP_DIRS': False,
- 'OPTIONS': {}
- }
- self.mako_backend = MakoBackend(parameters)
- def test_from_string(self):
- template = self.mako_backend.from_string(self.template_string)
- self.assertIsNotNone(template)
- self.assertIsInstance(template, Template)
- def test_get_template(self):
- template = self.mako_backend.get_template(self.template_name)
- self.assertIsNotNone(self.template_name)
- self.assertIsInstance(template, Template)
- def test_from_string_error(self):
- with self.assertRaises(TemplateSyntaxError):
- self.mako_backend.from_string(self.bad_string)
- def test_get_template_error(self):
- with self.assertRaises(TemplateDoesNotExist):
- self.mako_backend.get_template('wow.html')
- # Mocj a new bad template
- template_name = 'bad.html'
- bad_template = os.path.join(self.tmp_dir, template_name)
- with open(bad_template, 'w') as f:
- f.write(self.bad_string)
- with self.assertRaises(SyntaxException):
- self.mako_backend.get_template(template_name)
|