# HG changeset patch # User Ludovic Chabant # Date 1420437336 28800 # Node ID a333cdadf5b0abdd2fdee400f0e4aff77110983c # Parent 31eaffd0afd7fe9d8aa562aa634e4398e72c0560 tests: Add tests for Jinja template engine. diff -r 31eaffd0afd7 -r a333cdadf5b0 tests/test_templating_jinjaengine.py --- /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 +