Mercurial > piecrust2
view tests/test_uriutil.py @ 723:606f6d57b5df
routing: Cleanup URL routing and improve page matching.
* Add new types of route parameters for integers (int4, int2, int).
* Remove hard-coded hacks around converting year/month/day values.
* Make the blog post routes use the new typed parameters.
* Fix problems with matching routes with integer parameters when they can
get confused with a sub-page number.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 29 May 2016 20:19:28 -0700 |
parents | e85f29b28b84 |
children |
line wrap: on
line source
import mock import pytest from piecrust.uriutil import split_sub_uri @pytest.mark.parametrize('uri, expected, pretty_urls', [ ('/', ('/', 1), True), ('/2', ('/', 2), True), ('/foo/bar', ('/foo/bar', 1), True), ('/foo/bar/', ('/foo/bar', 1), True), ('/foo/bar/2/', ('/foo/bar', 2), True), ('/foo/bar.ext', ('/foo/bar.ext', 1), True), ('/foo/bar.ext/2', ('/foo/bar.ext', 2), True), ('/', ('/', 1), False), ('/2.html', ('/', 2), False), ('/foo/bar.html', ('/foo/bar.html', 1), False), ('/foo/bar/2.html', ('/foo/bar.html', 2), False), ('/foo/bar.ext', ('/foo/bar.ext', 1), False), ('/foo/bar/2.ext', ('/foo/bar.ext', 2), False) ]) def test_split_sub_uri(uri, expected, pretty_urls): app = mock.MagicMock() app.config = { 'site/root': '/', 'site/pretty_urls': pretty_urls, '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'} actual = split_sub_uri(app, uri) assert actual == (expected[0], expected[1]) @pytest.mark.parametrize('uri, expected, pretty_urls', [ ('/', ('/', 1), True), ('/2/', ('/', 2), True), ('/foo/bar', ('/foo/bar/', 1), True), ('/foo/bar/', ('/foo/bar/', 1), True), ('/foo/bar/2', ('/foo/bar/', 2), True), ('/foo/bar/2/', ('/foo/bar/', 2), True), ('/foo/bar.ext/', ('/foo/bar.ext/', 1), True), ('/foo/bar.ext/2/', ('/foo/bar.ext/', 2), True), ]) def test_split_sub_uri_trailing_slash(uri, expected, pretty_urls): app = mock.MagicMock() app.config = { 'site/root': '/', 'site/pretty_urls': pretty_urls, 'site/trailing_slash': True, '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'} actual = split_sub_uri(app, uri) assert actual == (expected[0], expected[1]) @pytest.mark.parametrize('uri, expected, pretty_urls', [ ('/', ('/', 1), True), ('/2', ('/', 2), True), ('/foo/bar', ('/foo/bar', 1), True), ('/foo/bar/', ('/foo/bar', 1), True), ('/foo/bar/2', ('/foo/bar', 2), True), ('/foo/bar/2/', ('/foo/bar', 2), True), ('/foo/bar.ext', ('/foo/bar.ext', 1), True), ('/foo/bar.ext/2', ('/foo/bar.ext', 2), True), ('/', ('/', 1), False), ('/2.html', ('/', 2), False), ('/foo/bar.html', ('/foo/bar.html', 1), False), ('/foo/bar/2.html', ('/foo/bar.html', 2), False), ('/foo/bar.ext', ('/foo/bar.ext', 1), False), ('/foo/bar/2.ext', ('/foo/bar.ext', 2), False) ]) def test_split_sub_uri_with_root(uri, expected, pretty_urls): app = mock.MagicMock() app.config = { 'site/root': '/whatever/', 'site/pretty_urls': pretty_urls, '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'} actual = split_sub_uri(app, '/whatever' + uri) assert actual == ('/whatever' + expected[0], expected[1])