Mercurial > piecrust2
changeset 189:a333cdadf5b0
tests: Add tests for Jinja template engine.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 04 Jan 2015 21:55:36 -0800 |
parents | 31eaffd0afd7 |
children | 430ee5b80962 |
files | tests/test_templating_jinjaengine.py |
diffstat | 1 files changed, 64 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_templating_jinjaengine.py Sun Jan 04 21:55:36 2015 -0800 @@ -0,0 +1,64 @@ +import pytest +from .mockutil import ( + mock_fs, mock_fs_scope, get_simple_page, render_simple_page) + + +app_config = { + 'site': { + 'default_format': 'none', + 'default_template_engine': 'jinja'}, + 'foo': 'bar'} +page_config = {'layout': 'none'} + +open_patches = ['jinja2.environment', 'jinja2.utils'] + + +@pytest.mark.parametrize( + 'contents, expected', + [ + ("Raw text", "Raw text"), + ("This is {{foo}}", "This is bar"), + ("Info:\nMy URL: {{page.url}}\n", + "Info:\nMy URL: /foo") + ]) +def test_simple(contents, expected): + fs = (mock_fs() + .withConfig(app_config) + .withPage('pages/foo', config=page_config, contents=contents)) + with mock_fs_scope(fs, open_patches=open_patches): + app = fs.getApp() + page = get_simple_page(app, 'foo.md') + output = render_simple_page(page, '/foo') + assert output == expected + + +def test_layout(): + contents = "Blah\n" + layout = "{{content}}\nFor site: {{foo}}\n" + expected = "Blah\nFor site: bar" + fs = (mock_fs() + .withConfig(app_config) + .withAsset('templates/blah.jinja', layout) + .withPage('pages/foo', config={'layout': 'blah'}, + contents=contents)) + with mock_fs_scope(fs, open_patches=open_patches): + app = fs.getApp() + page = get_simple_page(app, 'foo.md') + output = render_simple_page(page, '/foo') + assert output == expected + + +def test_partial(): + contents = "Info:\n{% include 'page_info.jinja' %}\n" + partial = "- URL: {{page.url}}\n- SLUG: {{page.slug}}\n" + expected = "Info:\n- URL: /foo\n- SLUG: foo" + fs = (mock_fs() + .withConfig(app_config) + .withAsset('templates/page_info.jinja', partial) + .withPage('pages/foo', config=page_config, contents=contents)) + with mock_fs_scope(fs, open_patches=open_patches): + app = fs.getApp() + page = get_simple_page(app, 'foo.md') + output = render_simple_page(page, '/foo') + assert output == expected +