1 "Unit tests for reverse URL lookup" |
|
2 |
|
3 from django.core.urlresolvers import reverse_helper, NoReverseMatch |
|
4 import re, unittest |
|
5 |
|
6 test_data = ( |
|
7 ('^places/(\d+)/$', 'places/3/', [3], {}), |
|
8 ('^places/(\d+)/$', 'places/3/', ['3'], {}), |
|
9 ('^places/(\d+)/$', NoReverseMatch, ['a'], {}), |
|
10 ('^places/(\d+)/$', NoReverseMatch, [], {}), |
|
11 ('^places/(?P<id>\d+)/$', 'places/3/', [], {'id': 3}), |
|
12 ('^people/(?P<name>\w+)/$', 'people/adrian/', ['adrian'], {}), |
|
13 ('^people/(?P<name>\w+)/$', 'people/adrian/', [], {'name': 'adrian'}), |
|
14 ('^people/(?P<name>\w+)/$', NoReverseMatch, ['name with spaces'], {}), |
|
15 ('^people/(?P<name>\w+)/$', NoReverseMatch, [], {'name': 'name with spaces'}), |
|
16 ('^people/(?P<name>\w+)/$', NoReverseMatch, [], {}), |
|
17 ('^hardcoded/$', 'hardcoded/', [], {}), |
|
18 ('^hardcoded/$', 'hardcoded/', ['any arg'], {}), |
|
19 ('^hardcoded/$', 'hardcoded/', [], {'kwarg': 'foo'}), |
|
20 ('^people/(?P<state>\w\w)/(?P<name>\w+)/$', 'people/il/adrian/', [], {'state': 'il', 'name': 'adrian'}), |
|
21 ('^people/(?P<state>\w\w)/(?P<name>\d)/$', NoReverseMatch, [], {'state': 'il', 'name': 'adrian'}), |
|
22 ('^people/(?P<state>\w\w)/(?P<name>\w+)/$', NoReverseMatch, [], {'state': 'il'}), |
|
23 ('^people/(?P<state>\w\w)/(?P<name>\w+)/$', NoReverseMatch, [], {'name': 'adrian'}), |
|
24 ('^people/(?P<state>\w\w)/(\w+)/$', NoReverseMatch, ['il'], {'name': 'adrian'}), |
|
25 ('^people/(?P<state>\w\w)/(\w+)/$', 'people/il/adrian/', ['adrian'], {'state': 'il'}), |
|
26 ) |
|
27 |
|
28 class URLPatternReverse(unittest.TestCase): |
|
29 def test_urlpattern_reverse(self): |
|
30 for regex, expected, args, kwargs in test_data: |
|
31 try: |
|
32 got = reverse_helper(re.compile(regex), *args, **kwargs) |
|
33 except NoReverseMatch, e: |
|
34 self.assertEqual(expected, NoReverseMatch) |
|
35 else: |
|
36 self.assertEquals(got, expected) |
|
37 |
|
38 if __name__ == "__main__": |
|
39 run_tests(1) |
|