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