thirdparty/google_appengine/lib/django/tests/regressiontests/urlpatterns_reverse/tests.py
changeset 2866 a04b1e4126c4
parent 2864 2e0b0af889be
child 2868 9f7f269383f7
equal deleted inserted replaced
2864:2e0b0af889be 2866:a04b1e4126c4
     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)