import unittest from pyramid.compat import bytes_ class TestTemplate(unittest.TestCase): def _makeOne(self, name='whatever'): from pyramid.scaffolds.template import Template return Template(name) def test_render_template_success(self): inst = self._makeOne() result = inst.render_template('{{a}} {{b}}', {'a': '1', 'b': '2'}) self.assertEqual(result, bytes_('1 2')) def test_render_template_expr_failure(self): inst = self._makeOne() self.assertRaises( AttributeError, inst.render_template, '{{a.foo}}', {'a': '1', 'b': '2'}, ) def test_render_template_expr_success(self): inst = self._makeOne() result = inst.render_template('{{a.lower()}}', {'a': 'A'}) self.assertEqual(result, b'a') def test_render_template_expr_success_via_pipe(self): inst = self._makeOne() result = inst.render_template('{{b|c|a.lower()}}', {'a': 'A'}) self.assertEqual(result, b'a') def test_render_template_expr_success_via_pipe2(self): inst = self._makeOne() result = inst.render_template('{{b|a.lower()|c}}', {'a': 'A'}) self.assertEqual(result, b'a') def test_render_template_expr_value_is_None(self): inst = self._makeOne() result = inst.render_template('{{a}}', {'a': None}) self.assertEqual(result, b'') def test_render_template_with_escaped_double_braces(self): inst = self._makeOne() result = inst.render_template( '{{a}} {{b}} \\{\\{a\\}\\} \\{\\{c\\}\\}', {'a': '1', 'b': '2'} ) self.assertEqual(result, bytes_('1 2 {{a}} {{c}}')) def test_render_template_with_breaking_escaped_braces(self): inst = self._makeOne() result = inst.render_template( '{{a}} {{b}} \\{\\{a\\} \\{b\\}\\}', {'a': '1', 'b': '2'} ) self.assertEqual(result, bytes_('1 2 \\{\\{a\\} \\{b\\}\\}')) def test_render_template_with_escaped_single_braces(self): inst = self._makeOne() result = inst.render_template( '{{a}} {{b}} \\{a\\} \\{b', {'a': '1', 'b': '2'} ) self.assertEqual(result, bytes_('1 2 \\{a\\} \\{b')) def test_module_dir(self): import sys import pkg_resources package = sys.modules['pyramid.scaffolds.template'] path = pkg_resources.resource_filename(package.__name__, '') inst = self._makeOne() result = inst.module_dir() self.assertEqual(result, path) def test_template_dir__template_dir_is_None(self): inst = self._makeOne() self.assertRaises(AssertionError, inst.template_dir) def test_template_dir__template_dir_is_tuple(self): inst = self._makeOne() inst._template_dir = ('a', 'b') self.assertEqual(inst.template_dir(), ('a', 'b')) def test_template_dir__template_dir_is_not_None(self): import os import sys import pkg_resources package = sys.modules['pyramid.scaffolds.template'] path = pkg_resources.resource_filename(package.__name__, '') inst = self._makeOne() inst._template_dir = 'foo' result = inst.template_dir() self.assertEqual(result, os.path.join(path, 'foo')) def test_write_files_path_exists(self): import os import sys import pkg_resources package = sys.modules['pyramid.scaffolds.template'] path = pkg_resources.resource_filename(package.__name__, '') inst = self._makeOne() inst._template_dir = 'foo' inst.exists = lambda *arg: True copydir = DummyCopydir() inst.copydir = copydir command = DummyCommand() inst.write_files(command, 'output dir', {'a': 1}) self.assertEqual(copydir.template_dir, os.path.join(path, 'foo')) self.assertEqual(copydir.output_dir, 'output dir') self.assertEqual(copydir.vars, {'a': 1}) self.assertEqual( copydir.kw, { 'template_renderer': inst.render_template, 'indent': 1, 'verbosity': 1, 'simulate': False, 'overwrite': False, 'interactive': False, }, ) def test_write_files_path_missing(self): L = [] inst = self._makeOne() inst._template_dir = 'foo' inst.exists = lambda *arg: False inst.out = lambda *arg: None inst.makedirs = lambda dir: L.append(dir) copydir = DummyCopydir() inst.copydir = copydir command = DummyCommand() inst.write_files(command, 'output dir', {'a': 1}) self.assertEqual(L, ['output dir']) def test_run(self): L = [] inst = self._makeOne() inst._template_dir = 'foo' inst.exists = lambda *arg: False inst.out = lambda *arg: None inst.makedirs = lambda dir: L.append(dir) copydir = DummyCopydir() inst.copydir = copydir command = DummyCommand() inst.run(command, 'output dir', {'a': 1}) self.assertEqual(L, ['output dir']) def test_check_vars(self): inst = self._makeOne() self.assertRaises(RuntimeError, inst.check_vars, 'one', 'two') class DummyCopydir(object): def copy_dir(self, template_dir, output_dir, vars, **kw): self.template_dir = template_dir self.output_dir = output_dir self.vars = vars self.kw = kw class DummyArgs(object): simulate = False overwrite = False interactive = False class DummyCommand(object): args = DummyArgs() verbosity = 1