Mercurial > piecrust2
comparison tests/test_routing.py @ 177:4b0c87e7df73
tests: Add unit tests for routing classes.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 03 Jan 2015 21:54:38 -0800 |
parents | |
children | 61145dcd56e0 |
comparison
equal
deleted
inserted
replaced
176:d47d9493bb0a | 177:4b0c87e7df73 |
---|---|
1 import mock | |
2 import pytest | |
3 from piecrust.routing import Route | |
4 | |
5 | |
6 @pytest.mark.parametrize( | |
7 'config, metadata, expected', | |
8 [ | |
9 ({'url': '/%foo%'}, | |
10 {'foo': 'bar'}, True), | |
11 ({'url': '/%foo%'}, | |
12 {'zoo': 'zar', 'foo': 'bar'}, True), | |
13 ({'url': '/%foo%'}, | |
14 {'zoo': 'zar'}, False), | |
15 ({'url': '/%foo%/%zoo%'}, | |
16 {'zoo': 'zar'}, False) | |
17 ]) | |
18 def test_matches_metadata(config, metadata, expected): | |
19 app = mock.Mock() | |
20 app.config = {'site/root': '/'} | |
21 config.setdefault('source', 'blah') | |
22 route = Route(app, config) | |
23 m = route.matchesMetadata(metadata) | |
24 assert m == expected | |
25 | |
26 | |
27 @pytest.mark.parametrize( | |
28 'config, uri, expected_match', | |
29 [ | |
30 ({'url': '/%foo%'}, | |
31 'something', | |
32 {'foo': 'something'}), | |
33 ({'url': '/%foo%'}, | |
34 'something/other', | |
35 None), | |
36 ({'url': '/%path:foo%'}, | |
37 'something/other', | |
38 {'foo': 'something/other'}), | |
39 ({'url': '/%path:foo%'}, | |
40 '', | |
41 {'foo': ''}), | |
42 ({'url': '/prefix/%path:foo%'}, | |
43 'prefix/something/other', | |
44 {'foo': 'something/other'}), | |
45 ({'url': '/prefix/%path:foo%'}, | |
46 'prefix/', | |
47 {'foo': ''}), | |
48 ({'url': '/prefix/%path:foo%'}, | |
49 'prefix', | |
50 {}), | |
51 ]) | |
52 def test_match_uri(config, uri, expected_match): | |
53 app = mock.Mock() | |
54 app.config = {'site/root': '/'} | |
55 config.setdefault('source', 'blah') | |
56 route = Route(app, config) | |
57 assert route.uri_pattern == config['url'].lstrip('/') | |
58 m = route.matchUri(uri) | |
59 assert m == expected_match | |
60 |