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 |
