Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Some tests for the new features. These pretty much fail at the moment…

…. Based on

SmileyChris's original work.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7849 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit c88e55b4fed5c0e82dc5c4505963e5bae48eb493 1 parent 25f2cfb
@malcolmt malcolmt authored
Showing with 33 additions and 6 deletions.
  1. +33 −6 tests/regressiontests/urlpatterns_reverse/tests.py
View
39 tests/regressiontests/urlpatterns_reverse/tests.py
@@ -1,19 +1,32 @@
-"Unit tests for reverse URL lookup"
+"""
+Unit tests for reverse URL lookups.
+"""
+
+import re
+import unittest
from django.core.urlresolvers import reverse_helper, NoReverseMatch
-import re, unittest
test_data = (
('^places/(\d+)/$', 'places/3/', [3], {}),
('^places/(\d+)/$', 'places/3/', ['3'], {}),
('^places/(\d+)/$', NoReverseMatch, ['a'], {}),
('^places/(\d+)/$', NoReverseMatch, [], {}),
+ ('^places?/$', '/', [], {}),
+ ('^places+/$', 'places/', [], {}),
+ ('^places*/$', '/', [], {}),
+ (r'^places/(\d+|[a-z_]+)/', 'places/4/', [4], {}),
+ (r'^places/(\d+|[a-z_]+)/', 'places/harlem/', ['harlem'], {}),
+ (r'^places/(\d+|[a-z_]+)/', NoReverseMatch, ['harlem64'], {}),
('^places/(?P<id>\d+)/$', 'places/3/', [], {'id': 3}),
+ ('^people/(?P<name>\w+)/$', NoReverseMatch, [], {}),
('^people/(?P<name>\w+)/$', 'people/adrian/', ['adrian'], {}),
('^people/(?P<name>\w+)/$', 'people/adrian/', [], {'name': 'adrian'}),
('^people/(?P<name>\w+)/$', NoReverseMatch, ['name with spaces'], {}),
('^people/(?P<name>\w+)/$', NoReverseMatch, [], {'name': 'name with spaces'}),
- ('^people/(?P<name>\w+)/$', NoReverseMatch, [], {}),
+ ('^people/(?:name/)', 'people/name/', [], {}),
+ ('^people/(?:name/)?', 'people/', [], {}),
+ ('^people/(?:name/(\w+)/)?', 'people/name/fred/', ['fred'], {}),
('^hardcoded/$', 'hardcoded/', [], {}),
('^hardcoded/$', 'hardcoded/', ['any arg'], {}),
('^hardcoded/$', 'hardcoded/', [], {'kwarg': 'foo'}),
@@ -24,17 +37,31 @@
('^people/(?P<state>\w\w)/(?P<name>\w+)/$', NoReverseMatch, [], {'name': 'adrian'}),
('^people/(?P<state>\w\w)/(\w+)/$', NoReverseMatch, ['il'], {'name': 'adrian'}),
('^people/(?P<state>\w\w)/(\w+)/$', 'people/il/adrian/', ['adrian'], {'state': 'il'}),
+ (r'^people/((?P<state>\w\w)/test)?/(\w+)/$', 'people/il/test/adrian/', ['adrian'], {'state': 'il'}),
+ (r'^people/((?P<state>\w\w)/test)?/(\w+)/$', NoReverseMatch, ['adrian'], {}),
+ ('^character_set/[abcdef0-9]/$', 'character_set/a/', [], {}),
+ ('^character_set/[\w]/$', 'character_set/a/', [], {}),
+ (r'^price/\$(\d+)/$', 'price/$10/', ['10'], {}),
+ (r'^price/[$](\d+)/$', 'price/$10/', ['10'], {}),
+ (r'^price/[\$](\d+)/$', 'price/$10/', ['10'], {}),
+ (r'^product/(?P<product>\w+)\+\(\$(?P<price>\d+(\.\d+)?)\)/$', 'product/chocolate+($2.00)/', ['2.00'], {'product': 'chocolate'}),
+ (r'^headlines/(?P<year>\d+)\.(?P<month>\d+)\.(?P<day>\d+)/$', 'headlines/2007.5.21/', [], dict(year=2007, month=5, day=21)),
+ (r'^windows_path/(?P<drive_name>[A-Z]):\\(?P<path>.+)/$', r'windows_path/C:\Documents and Settings\spam/', [], dict(drive_name='C', path=r'Documents and Settings\spam')),
+ (r'^special_chars/(.+)/$', r'special_chars/+\$*/', [r'+\$*'], {}),
+ (r'^special_chars/(.+)/$', NoReverseMatch, [''], {}),
+ (r'^(?P<name>.+)/\d+/$', NoReverseMatch, [], {'name': 'john'}),
+ (r'^repeats/a{1,2}/$', 'repeats/a/', [], {}),
+ (r'^repeats/a{2,4}/$', 'repeats/aa/', [], {}),
+ (r'^people/(?:(?:wilma|fred)/)$', '/people/wilma', [], {}),
)
class URLPatternReverse(unittest.TestCase):
def test_urlpattern_reverse(self):
for regex, expected, args, kwargs in test_data:
try:
- got = reverse_helper(re.compile(regex), *args, **kwargs)
+ got = reverse_helper(regex, *args, **kwargs)
except NoReverseMatch, e:
self.assertEqual(expected, NoReverseMatch)
else:
self.assertEquals(got, expected)
-if __name__ == "__main__":
- run_tests(1)
Please sign in to comment.
Something went wrong with that request. Please try again.