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