Mercurial > piecrust2
diff tests/test_routing.py @ 974:72f17534d58e
tests: First pass on making unit tests work again.
- Fix all imports
- Add more helper functions to work with mock file-systems
- Simplify some code by running chef directly on the mock FS
- Fix a couple tests
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 17 Oct 2017 01:07:30 -0700 |
parents | 58ebf50235a5 |
children | 45ad976712ec |
line wrap: on
line diff
--- a/tests/test_routing.py Tue Oct 17 01:04:10 2017 -0700 +++ b/tests/test_routing.py Tue Oct 17 01:07:30 2017 -0700 @@ -2,7 +2,7 @@ import mock import pytest from piecrust.routing import Route, RouteParameter -from piecrust.sources.base import PageSource +from piecrust.sources.base import ContentSource from .mockutil import get_mock_app @@ -20,24 +20,24 @@ else: route_params.append(RouteParameter(p, RouteParameter.TYPE_STRING)) - src = mock.MagicMock(spec=PageSource) + src = mock.MagicMock(spec=ContentSource) src.name = name src.getSupportedRouteParameters = lambda: route_params return src @pytest.mark.parametrize( - 'config, metadata, params, expected', - [ - ({'url': '/%foo%'}, - {'foo': 'bar'}, ['foo'], True), - ({'url': '/%foo%'}, - {'zoo': 'zar', 'foo': 'bar'}, ['foo'], True), - ({'url': '/%foo%'}, - {'zoo': 'zar'}, ['foo'], False), - ({'url': '/%foo%/%zoo%'}, - {'zoo': 'zar'}, ['foo', 'zoo'], False) - ]) + 'config, metadata, params, expected', + [ + ({'url': '/%foo%'}, + {'foo': 'bar'}, ['foo'], True), + ({'url': '/%foo%'}, + {'zoo': 'zar', 'foo': 'bar'}, ['foo'], True), + ({'url': '/%foo%'}, + {'zoo': 'zar'}, ['foo'], False), + ({'url': '/%foo%/%zoo%'}, + {'zoo': 'zar'}, ['foo', 'zoo'], False) + ]) def test_matches_metadata(config, metadata, params, expected): app = get_mock_app() app.config.set('site/root', '/') @@ -50,21 +50,22 @@ @pytest.mark.parametrize( - 'site_root, route_pattern, params, expected_func_parameters', - [ - ('/', '/%foo%', ['foo'], ['foo']), - ('/', '/%foo%', [('foo', 'path')], ['foo']), - ('/', '/%foo%/%bar%', ['foo', 'bar'], ['foo', 'bar']), - ('/', '/%foo%/%bar%', ['foo', ('bar', 'path')], ['foo', 'bar']), - ('/something', '/%foo%', ['foo'], ['foo']), - ('/something', '/%foo%', [('foo', 'path')], ['foo']), - ('/something', '/%foo%/%bar%', ['foo', 'bar'], ['foo', 'bar']), - ('/something', '/%foo%/%bar%', ['foo', ('bar', 'path')], ['foo', 'bar']), - ('/~johndoe', '/%foo%', ['foo'], ['foo']), - ('/~johndoe', '/%foo%', [('foo', 'path')], ['foo']), - ('/~johndoe', '/%foo%/%bar%', ['foo', 'bar'], ['foo', 'bar']), - ('/~johndoe', '/%foo%/%bar%', ['foo', ('bar', 'path')], ['foo', 'bar']) - ]) + 'site_root, route_pattern, params, expected_func_parameters', + [ + ('/', '/%foo%', ['foo'], ['foo']), + ('/', '/%foo%', [('foo', 'path')], ['foo']), + ('/', '/%foo%/%bar%', ['foo', 'bar'], ['foo', 'bar']), + ('/', '/%foo%/%bar%', ['foo', ('bar', 'path')], ['foo', 'bar']), + ('/something', '/%foo%', ['foo'], ['foo']), + ('/something', '/%foo%', [('foo', 'path')], ['foo']), + ('/something', '/%foo%/%bar%', ['foo', 'bar'], ['foo', 'bar']), + ('/something', '/%foo%/%bar%', ['foo', ('bar', 'path')], + ['foo', 'bar']), + ('/~johndoe', '/%foo%', ['foo'], ['foo']), + ('/~johndoe', '/%foo%', [('foo', 'path')], ['foo']), + ('/~johndoe', '/%foo%/%bar%', ['foo', 'bar'], ['foo', 'bar']), + ('/~johndoe', '/%foo%/%bar%', ['foo', ('bar', 'path')], ['foo', 'bar']) + ]) def test_required_metadata(site_root, route_pattern, params, expected_func_parameters): app = get_mock_app() @@ -77,95 +78,95 @@ @pytest.mark.parametrize( - 'site_root, config, params, uri, expected_match', - [ - ('/', {'url': '/%foo%'}, - ['foo'], - 'something', - {'foo': 'something'}), - ('/', {'url': '/%foo%'}, - ['foo'], - 'something/other', - None), - ('/', {'url': '/%foo%'}, - [('foo', 'path')], - 'something/other', - {'foo': 'something/other'}), - ('/', {'url': '/%foo%'}, - [('foo', 'path')], - '', - {'foo': ''}), - ('/', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix/something/other', - {'foo': 'something/other'}), - ('/', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix/', - {'foo': ''}), - ('/', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix', - {'foo': ''}), + 'site_root, config, params, uri, expected_match', + [ + ('/', {'url': '/%foo%'}, + ['foo'], + 'something', + {'foo': 'something'}), + ('/', {'url': '/%foo%'}, + ['foo'], + 'something/other', + None), + ('/', {'url': '/%foo%'}, + [('foo', 'path')], + 'something/other', + {'foo': 'something/other'}), + ('/', {'url': '/%foo%'}, + [('foo', 'path')], + '', + {'foo': ''}), + ('/', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix/something/other', + {'foo': 'something/other'}), + ('/', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix/', + {'foo': ''}), + ('/', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix', + {'foo': ''}), - ('/blah', {'url': '/%foo%'}, - ['foo'], - 'something', - {'foo': 'something'}), - ('/blah', {'url': '/%foo%'}, - ['foo'], - 'something/other', - None), - ('/blah', {'url': '/%foo%'}, - [('foo', 'path')], - 'something/other', - {'foo': 'something/other'}), - ('/blah', {'url': '/%foo%'}, - [('foo', 'path')], - '', - {'foo': ''}), - ('/blah', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix/something/other', - {'foo': 'something/other'}), - ('/blah', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix/', - {'foo': ''}), - ('/blah', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix', - {'foo': ''}), + ('/blah', {'url': '/%foo%'}, + ['foo'], + 'something', + {'foo': 'something'}), + ('/blah', {'url': '/%foo%'}, + ['foo'], + 'something/other', + None), + ('/blah', {'url': '/%foo%'}, + [('foo', 'path')], + 'something/other', + {'foo': 'something/other'}), + ('/blah', {'url': '/%foo%'}, + [('foo', 'path')], + '', + {'foo': ''}), + ('/blah', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix/something/other', + {'foo': 'something/other'}), + ('/blah', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix/', + {'foo': ''}), + ('/blah', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix', + {'foo': ''}), - ('/~johndoe', {'url': '/%foo%'}, - ['foo'], - 'something', - {'foo': 'something'}), - ('/~johndoe', {'url': '/%foo%'}, - ['foo'], - 'something/other', - None), - ('/~johndoe', {'url': '/%foo%'}, - [('foo', 'path')], - 'something/other', - {'foo': 'something/other'}), - ('/~johndoe', {'url': '/%foo%'}, - [('foo', 'path')], - '', - {'foo': ''}), - ('/~johndoe', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix/something/other', - {'foo': 'something/other'}), - ('/~johndoe', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix/', - {'foo': ''}), - ('/~johndoe', {'url': '/prefix/%foo%'}, - [('foo', 'path')], - 'prefix', - {'foo': ''}), - ]) + ('/~johndoe', {'url': '/%foo%'}, + ['foo'], + 'something', + {'foo': 'something'}), + ('/~johndoe', {'url': '/%foo%'}, + ['foo'], + 'something/other', + None), + ('/~johndoe', {'url': '/%foo%'}, + [('foo', 'path')], + 'something/other', + {'foo': 'something/other'}), + ('/~johndoe', {'url': '/%foo%'}, + [('foo', 'path')], + '', + {'foo': ''}), + ('/~johndoe', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix/something/other', + {'foo': 'something/other'}), + ('/~johndoe', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix/', + {'foo': ''}), + ('/~johndoe', {'url': '/prefix/%foo%'}, + [('foo', 'path')], + 'prefix', + {'foo': ''}), + ]) def test_match_uri(site_root, config, params, uri, expected_match): site_root = site_root.rstrip('/') + '/' app = get_mock_app() @@ -180,12 +181,12 @@ @pytest.mark.parametrize( - 'site_root', - [ - ('/'), - ('/whatever'), - ('/~johndoe') - ]) + 'site_root', + [ + ('/'), + ('/whatever'), + ('/~johndoe') + ]) def test_match_uri_requires_absolute_uri(site_root): with pytest.raises(Exception): app = get_mock_app() @@ -198,35 +199,35 @@ @pytest.mark.parametrize( - 'slug, page_num, pretty, expected', - [ - # Pretty URLs - ('', 1, True, ''), - ('', 2, True, '2'), - ('foo', 1, True, 'foo'), - ('foo', 2, True, 'foo/2'), - ('foo/bar', 1, True, 'foo/bar'), - ('foo/bar', 2, True, 'foo/bar/2'), - ('foo.ext', 1, True, 'foo.ext'), - ('foo.ext', 2, True, 'foo.ext/2'), - ('foo/bar.ext', 1, True, 'foo/bar.ext'), - ('foo/bar.ext', 2, True, 'foo/bar.ext/2'), - ('foo.bar.ext', 1, True, 'foo.bar.ext'), - ('foo.bar.ext', 2, True, 'foo.bar.ext/2'), - # Ugly URLs - ('', 1, False, ''), - ('', 2, False, '2.html'), - ('foo', 1, False, 'foo.html'), - ('foo', 2, False, 'foo/2.html'), - ('foo/bar', 1, False, 'foo/bar.html'), - ('foo/bar', 2, False, 'foo/bar/2.html'), - ('foo.ext', 1, False, 'foo.ext'), - ('foo.ext', 2, False, 'foo/2.ext'), - ('foo/bar.ext', 1, False, 'foo/bar.ext'), - ('foo/bar.ext', 2, False, 'foo/bar/2.ext'), - ('foo.bar.ext', 1, False, 'foo.bar.ext'), - ('foo.bar.ext', 2, False, 'foo.bar/2.ext') - ]) + 'slug, page_num, pretty, expected', + [ + # Pretty URLs + ('', 1, True, ''), + ('', 2, True, '2'), + ('foo', 1, True, 'foo'), + ('foo', 2, True, 'foo/2'), + ('foo/bar', 1, True, 'foo/bar'), + ('foo/bar', 2, True, 'foo/bar/2'), + ('foo.ext', 1, True, 'foo.ext'), + ('foo.ext', 2, True, 'foo.ext/2'), + ('foo/bar.ext', 1, True, 'foo/bar.ext'), + ('foo/bar.ext', 2, True, 'foo/bar.ext/2'), + ('foo.bar.ext', 1, True, 'foo.bar.ext'), + ('foo.bar.ext', 2, True, 'foo.bar.ext/2'), + # Ugly URLs + ('', 1, False, ''), + ('', 2, False, '2.html'), + ('foo', 1, False, 'foo.html'), + ('foo', 2, False, 'foo/2.html'), + ('foo/bar', 1, False, 'foo/bar.html'), + ('foo/bar', 2, False, 'foo/bar/2.html'), + ('foo.ext', 1, False, 'foo.ext'), + ('foo.ext', 2, False, 'foo/2.ext'), + ('foo/bar.ext', 1, False, 'foo/bar.ext'), + ('foo/bar.ext', 2, False, 'foo/bar/2.ext'), + ('foo.bar.ext', 1, False, 'foo.bar.ext'), + ('foo.bar.ext', 2, False, 'foo.bar/2.ext') + ]) def test_get_uri(slug, page_num, pretty, expected): for root in ['/', '/blah/', '/~johndoe/']: app = get_mock_app()