comparison tests/test_routing.py @ 787:f6f9a284a5f3

routing: Simplify how route functions are declared and handled. * Site config now only has to declare the function name. * Simply code for running route functions.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 01 Sep 2016 23:00:58 -0700
parents 6b6c5442c790
children 58ebf50235a5
comparison
equal deleted inserted replaced
786:97c1dc568810 787:f6f9a284a5f3
24 m = route.matchesMetadata(metadata) 24 m = route.matchesMetadata(metadata)
25 assert m == expected 25 assert m == expected
26 26
27 27
28 @pytest.mark.parametrize( 28 @pytest.mark.parametrize(
29 'site_root, route_pattern, expected_required_metadata', 29 'site_root, route_pattern, expected_func_parameters',
30 [ 30 [
31 ('/', '/%foo%', set(['foo'])), 31 ('/', '/%foo%', ['foo']),
32 ('/', '/%path:foo%', set(['foo'])), 32 ('/', '/%path:foo%', ['foo']),
33 ('/', '/%foo%/%bar%', set(['foo', 'bar'])), 33 ('/', '/%foo%/%bar%', ['foo', 'bar']),
34 ('/', '/%foo%/%path:bar%', set(['foo', 'bar'])), 34 ('/', '/%foo%/%path:bar%', ['foo', 'bar']),
35 ('/something', '/%foo%', set(['foo'])), 35 ('/something', '/%foo%', ['foo']),
36 ('/something', '/%path:foo%', set(['foo'])), 36 ('/something', '/%path:foo%', ['foo']),
37 ('/something', '/%foo%/%bar%', set(['foo', 'bar'])), 37 ('/something', '/%foo%/%bar%', ['foo', 'bar']),
38 ('/something', '/%foo%/%path:bar%', set(['foo', 'bar'])), 38 ('/something', '/%foo%/%path:bar%', ['foo', 'bar']),
39 ('/~johndoe', '/%foo%', set(['foo'])), 39 ('/~johndoe', '/%foo%', ['foo']),
40 ('/~johndoe', '/%path:foo%', set(['foo'])), 40 ('/~johndoe', '/%path:foo%', ['foo']),
41 ('/~johndoe', '/%foo%/%bar%', set(['foo', 'bar'])), 41 ('/~johndoe', '/%foo%/%bar%', ['foo', 'bar']),
42 ('/~johndoe', '/%foo%/%path:bar%', set(['foo', 'bar'])) 42 ('/~johndoe', '/%foo%/%path:bar%', ['foo', 'bar'])
43 ]) 43 ])
44 def test_required_metadata(site_root, route_pattern, 44 def test_required_metadata(site_root, route_pattern,
45 expected_required_metadata): 45 expected_func_parameters):
46 app = get_mock_app() 46 app = get_mock_app()
47 app.config.set('site/root', site_root.rstrip('/') + '/') 47 app.config.set('site/root', site_root.rstrip('/') + '/')
48 config = {'url': route_pattern, 'source': 'blah'} 48 config = {'url': route_pattern, 'source': 'blah'}
49 route = Route(app, config) 49 route = Route(app, config)
50 assert route.required_route_metadata == expected_required_metadata 50 assert route.func_parameters == expected_func_parameters
51 51
52 52
53 @pytest.mark.parametrize( 53 @pytest.mark.parametrize(
54 'site_root, config, uri, expected_match', 54 'site_root, config, uri, expected_match',
55 [ 55 [