44
55from django .conf import settings
66from django .conf .urls import url
7- from django . core . urlresolvers import RegexURLResolver , Resolver404 , NoReverseMatch
7+
88from django .http import HttpResponse
99
1010from multiurl import multiurl , ContinueResolving
1111
12+ try :
13+ from django import urls as urlresolvers
14+ from django .urls .resolvers import RegexPattern
15+ except ImportError :
16+ # Fallbacks and mocks for Django 1.*
17+ from django .core import urlresolvers
18+
19+ urlresolvers .URLResolver = urlresolvers .RegexURLResolver
20+
21+ def RegexPattern (pattern ):
22+ return pattern
23+
1224
1325class MultiviewTests (unittest .TestCase ):
1426 def setUp (self ):
1527 # Patterns with a "catch all" view (thing) at the end.
16- self .patterns_catchall = RegexURLResolver ( '^/' , [
28+ self .patterns_catchall = urlresolvers . URLResolver ( RegexPattern ( r '^/') , [
1729 multiurl (
1830 url (r'^(\w+)/$' , person , name = 'person' ),
1931 url (r'^(\w+)/$' , place , name = 'place' ),
@@ -22,7 +34,7 @@ def setUp(self):
2234 ])
2335
2436 # Patterns with no "catch all" - last view could still raise ContinueResolving.
25- self .patterns_no_fallthrough = RegexURLResolver ( '^/' , [
37+ self .patterns_no_fallthrough = urlresolvers . URLResolver ( RegexPattern ( r '^/') , [
2638 multiurl (
2739 url (r'^(\w+)/$' , person , name = 'person' ),
2840 url (r'^(\w+)/$' , place , name = 'place' ),
@@ -46,26 +58,27 @@ def test_resolve_match_last(self):
4658
4759 def test_resolve_match_faillthrough (self ):
4860 m = self .patterns_no_fallthrough .resolve ('/bacon/' )
49- with self .assertRaises (Resolver404 ):
61+ with self .assertRaises (urlresolvers . Resolver404 ):
5062 m .func (request = None , * m .args , ** m .kwargs )
5163
5264 def test_no_match (self ):
53- with self .assertRaises (Resolver404 ):
65+ with self .assertRaises (urlresolvers . Resolver404 ):
5466 self .patterns_catchall .resolve ('/eggs/and/bacon/' )
5567
5668 def test_reverse (self ):
5769 self .assertEqual ('joe/' , self .patterns_catchall .reverse ('person' , 'joe' ))
5870 self .assertEqual ('joe/' , self .patterns_catchall .reverse ('place' , 'joe' ))
5971 self .assertEqual ('joe/' , self .patterns_catchall .reverse ('thing' , 'joe' ))
60- with self .assertRaises (NoReverseMatch ):
72+ with self .assertRaises (urlresolvers . NoReverseMatch ):
6173 self .patterns_catchall .reverse ('person' )
62- with self .assertRaises (NoReverseMatch ):
74+ with self .assertRaises (urlresolvers . NoReverseMatch ):
6375 self .patterns_catchall .reverse ('argh' , 'xyz' )
6476
6577#
6678# Some "views" to test against.
6779#
6880
81+
6982def person (request , name ):
7083 people = {
7184 'john' : 'John Smith' ,
@@ -75,6 +88,7 @@ def person(request, name):
7588 return HttpResponse ("Person: " + people [name ])
7689 raise ContinueResolving
7790
91+
7892def place (request , name ):
7993 places = {
8094 'sf' : 'San Francisco' ,
@@ -84,9 +98,11 @@ def place(request, name):
8498 return HttpResponse ("Place: " + places [name ])
8599 raise ContinueResolving
86100
101+
87102def thing (request , name ):
88103 return HttpResponse ("Thing: " + name .title ())
89104
105+
90106if __name__ == '__main__' :
91107 settings .configure ()
92108 unittest .main ()
0 commit comments