Mercurial > piecrust2
view tests/test_serving.py @ 262:61145dcd56e0
routing: Better generate URLs according to the site configuration.
This fixes problems now that even the chef server generates URLs that are
appropriate given the `pretty_urls` and `trailing_slash` settings.
Add some tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 24 Feb 2015 08:06:25 -0800 |
parents | d47d9493bb0a |
children | 65e6d72f3877 |
line wrap: on
line source
import re import pytest import mock from piecrust.serving 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 = matching[i] exp_source, exp_md = expected[i] assert route.source_name == exp_source assert metadata == exp_md