Mercurial > piecrust2
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_serving_util.py Tue Oct 17 01:07:30 2017 -0700 @@ -0,0 +1,35 @@ +import re +import pytest +import mock +from piecrust.serving.util import find_routes +from piecrust.sources.base import REALM_USER, REALM_THEME + + +@pytest.mark.parametrize( + 'uri, route_specs, expected', + [ + ('/', + [{'src': 'pages', 'pat': '(?P<path>.*)'}], + [('pages', {'path': '/'})]), + ('/', + [{'src': 'pages', 'pat': '(?P<path>.*)'}, + {'src': 'theme', 'pat': '(?P<path>.*)', 'realm': REALM_THEME}], + [('pages', {'path': '/'}), ('theme', {'path': '/'})]) + ]) +def test_find_routes(uri, route_specs, expected): + routes = [] + for rs in route_specs: + m = mock.Mock() + m.source_name = rs['src'] + m.source_realm = rs.setdefault('realm', REALM_USER) + m.uri_re = re.compile(rs['pat']) + m.matchUri = lambda u: m.uri_re.match(u).groupdict() + routes.append(m) + matching = find_routes(routes, uri) + + assert len(matching) == len(expected) + for i in range(len(matching)): + route, metadata, is_sub_page = matching[i] + exp_source, exp_md = expected[i] + assert route.source_name == exp_source + assert metadata == exp_md