Mercurial > piecrust2
annotate tests/test_uriutil.py @ 485:c40b7923c474
jinja: Support `.j2` file extensions.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 22 Jul 2015 00:07:57 -0700 |
parents | d4321317beae |
children | 4284c673bb91 |
rev | line source |
---|---|
33
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
1 import mock |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import pytest |
316
eb958151c8dc
tests: Bad me, the tests were broken. Now they're fixed.
Ludovic Chabant <ludovic@chabant.com>
parents:
33
diff
changeset
|
3 from piecrust.uriutil import UriInfo, parse_uri, split_sub_uri |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 @pytest.mark.parametrize('routes, uri, expected', [ |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 ({}, '/foo', None), |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 ( |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 {'/articles/%slug%': {'source': 'dummy'}}, |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 '/articles/foo', |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 UriInfo('', 'dummy', {'slug': 'foo'})), |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 ( |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 {'/foo/%bar%': {'source': 'foo'}, |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 '/other/%one%-%two%': {'source': 'other'}}, |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 '/other/some-thing', |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 UriInfo('', 'other', {'one': 'some', 'two': 'thing'})) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 ]) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 def test_parse_uri(routes, uri, expected): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 if expected is not None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 expected.uri = uri |
5 | 21 for pattern, args in routes.items(): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 if 'taxonomy' not in args: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 args['taxonomy'] = None |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
24 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 actual = parse_uri(routes, uri) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 assert actual == expected |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 |
33
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
28 |
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
29 @pytest.mark.parametrize('uri, expected, pretty_urls', [ |
484
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
30 ('/', ('/', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
31 ('/2', ('/', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
32 ('/foo/bar', ('/foo/bar', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
33 ('/foo/bar/2', ('/foo/bar', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
34 ('/foo/bar.ext', ('/foo/bar.ext', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
35 ('/foo/bar.ext/2', ('/foo/bar.ext', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
36 ('/', ('/', 1), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
37 ('/2.html', ('/', 2), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
38 ('/foo/bar.html', ('/foo/bar.html', 1), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
39 ('/foo/bar/2.html', ('/foo/bar.html', 2), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
40 ('/foo/bar.ext', ('/foo/bar.ext', 1), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
41 ('/foo/bar/2.ext', ('/foo/bar.ext', 2), False) |
33
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
42 ]) |
316
eb958151c8dc
tests: Bad me, the tests were broken. Now they're fixed.
Ludovic Chabant <ludovic@chabant.com>
parents:
33
diff
changeset
|
43 def test_split_sub_uri(uri, expected, pretty_urls): |
33
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
44 app = mock.MagicMock() |
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
45 app.config = { |
484
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
46 'site/root': '/', |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
47 'site/pretty_urls': pretty_urls, |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
48 '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'} |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
49 actual = split_sub_uri(app, uri) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
50 assert actual == (expected[0], expected[1]) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
51 |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
52 |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
53 @pytest.mark.parametrize('uri, expected, pretty_urls', [ |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
54 ('/', ('/', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
55 ('/2/', ('/', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
56 ('/foo/bar/', ('/foo/bar/', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
57 ('/foo/bar/2/', ('/foo/bar/', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
58 ('/foo/bar.ext/', ('/foo/bar.ext/', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
59 ('/foo/bar.ext/2/', ('/foo/bar.ext/', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
60 ]) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
61 def test_split_sub_uri_trailing_slash(uri, expected, pretty_urls): |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
62 app = mock.MagicMock() |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
63 app.config = { |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
64 'site/root': '/', |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
65 'site/pretty_urls': pretty_urls, |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
66 'site/trailing_slash': True, |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
67 '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'} |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
68 actual = split_sub_uri(app, uri) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
69 assert actual == (expected[0], expected[1]) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
70 |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
71 |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
72 @pytest.mark.parametrize('uri, expected, pretty_urls', [ |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
73 ('/', ('/', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
74 ('/2', ('/', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
75 ('/foo/bar', ('/foo/bar', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
76 ('/foo/bar/2', ('/foo/bar', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
77 ('/foo/bar.ext', ('/foo/bar.ext', 1), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
78 ('/foo/bar.ext/2', ('/foo/bar.ext', 2), True), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
79 ('/', ('/', 1), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
80 ('/2.html', ('/', 2), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
81 ('/foo/bar.html', ('/foo/bar.html', 1), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
82 ('/foo/bar/2.html', ('/foo/bar.html', 2), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
83 ('/foo/bar.ext', ('/foo/bar.ext', 1), False), |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
84 ('/foo/bar/2.ext', ('/foo/bar.ext', 2), False) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
85 ]) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
86 def test_split_sub_uri_with_root(uri, expected, pretty_urls): |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
87 app = mock.MagicMock() |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
88 app.config = { |
329
422052d2e978
internal: Try handling URLs in a consistent way.
Ludovic Chabant <ludovic@chabant.com>
parents:
316
diff
changeset
|
89 'site/root': '/whatever/', |
33
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
90 'site/pretty_urls': pretty_urls, |
316
eb958151c8dc
tests: Bad me, the tests were broken. Now they're fixed.
Ludovic Chabant <ludovic@chabant.com>
parents:
33
diff
changeset
|
91 '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'} |
484
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
92 actual = split_sub_uri(app, '/whatever' + uri) |
d4321317beae
internal: Correctly split sub URIs. Add unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
329
diff
changeset
|
93 assert actual == ('/whatever' + expected[0], expected[1]) |
33
62c7a97c8340
Get the un-paginated URL of a page early and pass that around.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
94 |