Mercurial > piecrust2
annotate tests/test_templating_jinjaengine.py @ 334:b034f6f15e22
bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
* Improve how the baker processes taxonomy terms and figures out what needs
to be re-baked or not.
* Create bake entries for clean taxnomy terms so they're not deleted by an
incremental bake.
* Add more information to bake records.
* Slugify taxonomy terms is now done by the route in one place.
* Fix a bug where the cache key for invalidating rendered segments was not
computed the same way as when the caching was done.
* Fix how term combinations are passed around, rendered, printed, parsed, etc.
(TODO: more word needed in the routing functions)
* Expose to the template whether a taxonomy term is a combination or not.
* Display term combinations better in the built-in theme.
* Rename `route.taxonomy` to `route.taxonomy_name` to prevent confusion.
* Add options to show bake records for previous bakes.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 03 Apr 2015 10:59:50 -0700 |
parents | a333cdadf5b0 |
children | 4b1019bb2533 |
rev | line source |
---|---|
189
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 import pytest |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 from .mockutil import ( |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 mock_fs, mock_fs_scope, get_simple_page, render_simple_page) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 app_config = { |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 'site': { |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 'default_format': 'none', |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 'default_template_engine': 'jinja'}, |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 'foo': 'bar'} |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 page_config = {'layout': 'none'} |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 open_patches = ['jinja2.environment', 'jinja2.utils'] |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 @pytest.mark.parametrize( |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 'contents, expected', |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 [ |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 ("Raw text", "Raw text"), |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 ("This is {{foo}}", "This is bar"), |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
21 ("Info:\nMy URL: {{page.url}}\n", |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 "Info:\nMy URL: /foo") |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 ]) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
24 def test_simple(contents, expected): |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 fs = (mock_fs() |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 .withConfig(app_config) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 .withPage('pages/foo', config=page_config, contents=contents)) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 with mock_fs_scope(fs, open_patches=open_patches): |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 app = fs.getApp() |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 page = get_simple_page(app, 'foo.md') |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 output = render_simple_page(page, '/foo') |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
32 assert output == expected |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
33 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
34 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 def test_layout(): |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 contents = "Blah\n" |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 layout = "{{content}}\nFor site: {{foo}}\n" |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
38 expected = "Blah\nFor site: bar" |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
39 fs = (mock_fs() |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
40 .withConfig(app_config) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
41 .withAsset('templates/blah.jinja', layout) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 .withPage('pages/foo', config={'layout': 'blah'}, |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
43 contents=contents)) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
44 with mock_fs_scope(fs, open_patches=open_patches): |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
45 app = fs.getApp() |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
46 page = get_simple_page(app, 'foo.md') |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
47 output = render_simple_page(page, '/foo') |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
48 assert output == expected |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
49 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
50 |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
51 def test_partial(): |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
52 contents = "Info:\n{% include 'page_info.jinja' %}\n" |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
53 partial = "- URL: {{page.url}}\n- SLUG: {{page.slug}}\n" |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
54 expected = "Info:\n- URL: /foo\n- SLUG: foo" |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
55 fs = (mock_fs() |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
56 .withConfig(app_config) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 .withAsset('templates/page_info.jinja', partial) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
58 .withPage('pages/foo', config=page_config, contents=contents)) |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
59 with mock_fs_scope(fs, open_patches=open_patches): |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
60 app = fs.getApp() |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
61 page = get_simple_page(app, 'foo.md') |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 output = render_simple_page(page, '/foo') |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
63 assert output == expected |
a333cdadf5b0
tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
64 |