Mercurial > piecrust2
comparison tests/test_serving_util.py @ 974:72f17534d58e
tests: First pass on making unit tests work again.
- Fix all imports
- Add more helper functions to work with mock file-systems
- Simplify some code by running chef directly on the mock FS
- Fix a couple tests
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 17 Oct 2017 01:07:30 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
973:8419daaa7a0e | 974:72f17534d58e |
---|---|
1 import re | |
2 import pytest | |
3 import mock | |
4 from piecrust.serving.util import find_routes | |
5 from piecrust.sources.base import REALM_USER, REALM_THEME | |
6 | |
7 | |
8 @pytest.mark.parametrize( | |
9 'uri, route_specs, expected', | |
10 [ | |
11 ('/', | |
12 [{'src': 'pages', 'pat': '(?P<path>.*)'}], | |
13 [('pages', {'path': '/'})]), | |
14 ('/', | |
15 [{'src': 'pages', 'pat': '(?P<path>.*)'}, | |
16 {'src': 'theme', 'pat': '(?P<path>.*)', 'realm': REALM_THEME}], | |
17 [('pages', {'path': '/'}), ('theme', {'path': '/'})]) | |
18 ]) | |
19 def test_find_routes(uri, route_specs, expected): | |
20 routes = [] | |
21 for rs in route_specs: | |
22 m = mock.Mock() | |
23 m.source_name = rs['src'] | |
24 m.source_realm = rs.setdefault('realm', REALM_USER) | |
25 m.uri_re = re.compile(rs['pat']) | |
26 m.matchUri = lambda u: m.uri_re.match(u).groupdict() | |
27 routes.append(m) | |
28 matching = find_routes(routes, uri) | |
29 | |
30 assert len(matching) == len(expected) | |
31 for i in range(len(matching)): | |
32 route, metadata, is_sub_page = matching[i] | |
33 exp_source, exp_md = expected[i] | |
34 assert route.source_name == exp_source | |
35 assert metadata == exp_md |