예제 #1
0
    def testOnlyTemplate_success(self):
        template_loader = jinja2.DictLoader({
            'some/path': self.join_lines(
                '<title>{{ title }}</title>',
                '<ul>',
                '{% for user in users -%}',
                '<li><a href="{{ user.url }}">{{ user.username }}</a></li>',
                '{% endfor -%}',
                '</ul>')
        })
        jinja_env = jinja2.Environment(loader=template_loader)
        class User(object):
            def __init__(self, url, username):
                self.url = url
                self.username = username
        # Build Templar config.
        config_builder = ConfigBuilder()
        config_builder.add_variable('title', 'Test')
        config_builder.add_variable('users', [User('url1', 'user1'), User('url2', 'user2')])
        config = config_builder.build()

        result = publish(config, template='some/path', jinja_env=jinja_env, no_write=True)
        self.assertEqual(
                self.join_lines(
                    '<title>Test</title>',
                    '<ul>',
                    '<li><a href="url1">user1</a></li>',
                    '<li><a href="url2">user2</a></li>',
                    '</ul>'),
                result)
예제 #2
0
    def testOnlyTemplate_success(self):
        template_loader = jinja2.DictLoader({
            'some/path':
            self.join_lines(
                '<title>{{ title }}</title>', '<ul>',
                '{% for user in users -%}',
                '<li><a href="{{ user.url }}">{{ user.username }}</a></li>',
                '{% endfor -%}', '</ul>')
        })
        jinja_env = jinja2.Environment(loader=template_loader)

        class User(object):
            def __init__(self, url, username):
                self.url = url
                self.username = username

        # Build Templar config.
        config_builder = ConfigBuilder()
        config_builder.add_variable('title', 'Test')
        config_builder.add_variable(
            'users', [User('url1', 'user1'),
                      User('url2', 'user2')])
        config = config_builder.build()

        result = publish(config,
                         template='some/path',
                         jinja_env=jinja_env,
                         no_write=True)
        self.assertEqual(
            self.join_lines('<title>Test</title>', '<ul>',
                            '<li><a href="url1">user1</a></li>',
                            '<li><a href="url2">user2</a></li>', '</ul>'),
            result)
예제 #3
0
    def testConfigIsImmutable(self):
        with mock.patch('os.path.isdir', lambda s: True):
            builder = ConfigBuilder().add_template_dirs('template/path1', 'template/path2')
        builder.add_variable('var1', 'val1')
        config = builder.build()

        # Verify config was constructed correctly.
        self.assertSequenceEqual(['template/path1', 'template/path2'], config.template_dirs)
        self.assertDictEqual({'var1': 'val1'}, config.variables)

        new_builder = config.to_builder()
        new_builder.clear_template_dirs()
        new_builder.add_variable('var2', 'val2')

        # Verify previously built config was not affected by changes to new_builder.
        self.assertSequenceEqual(['template/path1', 'template/path2'], config.template_dirs)
        self.assertDictEqual({'var1': 'val1'}, config.variables)