def test_match_uri_requires_absolute_uri(site_root): with pytest.raises(Exception): app = get_mock_app() app.config.set('site/root', site_root.rstrip('/') + '/') config = {'url': '/%path:slug%', 'source': 'blah'} route = Route(app, config) route.matchUri('notabsuri')
def test_matches_metadata(config, metadata, expected): app = get_mock_app() app.config.set('site/root', '/') config.setdefault('source', 'blah') route = Route(app, config) m = route.matchesMetadata(metadata) assert m == expected
def test_matches_parameters(config, params, uri_params, expected): app = get_mock_app() app.config.set('site/root', '/') app.sources = [_getMockSource('blah', params)] config.setdefault('source', 'blah') route = Route(app, config) m = route.matchesParameters(uri_params) assert m == expected
def test_match_uri(site_root, config, uri, expected_match): site_root = site_root.rstrip('/') + '/' app = get_mock_app() app.config.set('site/root', site_root) config.setdefault('source', 'blah') route = Route(app, config) assert route.uri_pattern == config['url'].lstrip('/') m = route.matchUri(site_root + uri) assert m == expected_match
def test_get_uri(slug, page_num, pretty, expected): app = get_mock_app() app.config.set('site/root', '/blah/') app.config.set('site/pretty_urls', pretty) app.config.set('site/trailing_slash', False) app.config.set('__cache/pagination_suffix_format', '/%(num)d') config = {'url': '/%path:slug%', 'source': 'blah'} route = Route(app, config) uri = route.getUri({'slug': slug}, sub_num=page_num) assert uri == ('/blah/' + expected)
def test_match_uri(site_root, config, params, uri, expected_match): site_root = site_root.rstrip('/') + '/' app = get_mock_app() app.config.set('site/root', urllib.parse.quote(site_root)) app.sources = [_getMockSource('blah', params)] config.setdefault('source', 'blah') route = Route(app, config) assert route.uri_pattern == config['url'].lstrip('/') m = route.matchUri(urllib.parse.quote(site_root) + uri) assert m == expected_match
def test_get_uri(slug, page_num, pretty, expected): for root in ['/', '/blah/', '/~johndoe/']: app = get_mock_app() app.config.set('site/root', urllib.parse.quote(root)) app.config.set('site/pretty_urls', pretty) app.config.set('site/trailing_slash', False) app.config.set('__cache/pagination_suffix_format', '/%(num)d') app.sources = [_getMockSource('blah', [('slug', 'path')])] config = {'url': '/%slug%', 'source': 'blah'} route = Route(app, config) uri = route.getUri({'slug': slug}, sub_num=page_num) assert uri == (urllib.parse.quote(root) + expected)
def routes(self): routes = [] for r in self.config.get('site/routes'): rte = Route(self, r) routes.append(rte) routes = sorted(routes, key=lambda r: r.pass_num) return routes
def test_required_metadata(site_root, route_pattern, expected_required_metadata): app = get_mock_app() app.config.set('site/root', site_root.rstrip('/') + '/') config = {'url': route_pattern, 'source': 'blah'} route = Route(app, config) assert route.required_route_metadata == expected_required_metadata
def test_required_metadata(site_root, route_pattern, params, expected_func_parameters): app = get_mock_app() app.config.set('site/root', site_root.rstrip('/') + '/') app.sources = [_getMockSource('blah', params)] config = {'url': route_pattern, 'source': 'blah'} route = Route(app, config) assert route.uri_params == expected_func_parameters
def routes(self): routes = [] for r in self.config.get('site/routes'): rte = Route(self, r) routes.append(rte) return routes