diff --git a/multiurl.py b/multiurl.py index d0cd885..89d8f76 100644 --- a/multiurl.py +++ b/multiurl.py @@ -74,6 +74,8 @@ def func(self): def multiview(request): for i, match in enumerate(self.matches): try: + # Update ResolverMatch in request for later usage + request.resolver_match = match return match.func(request, *match.args, **match.kwargs) except self.exceptions: continue diff --git a/tests.py b/tests.py index 775c5c2..3de40d3 100644 --- a/tests.py +++ b/tests.py @@ -4,6 +4,7 @@ from django.conf import settings from django.conf.urls import url +from django.test.client import RequestFactory from django.http import HttpResponse @@ -41,25 +42,27 @@ def setUp(self): ) ]) + self.request = RequestFactory() + def test_resolve_match_first(self): m = self.patterns_catchall.resolve('/jane/') - response = m.func(request=None, *m.args, **m.kwargs) + response = m.func(request=self.request, *m.args, **m.kwargs) self.assertEqual(response.content, b"Person: Jane Doe") def test_resolve_match_middle(self): m = self.patterns_catchall.resolve('/sf/') - response = m.func(request=None, *m.args, **m.kwargs) + response = m.func(request=self.request, *m.args, **m.kwargs) self.assertEqual(response.content, b"Place: San Francisco") def test_resolve_match_last(self): m = self.patterns_catchall.resolve('/bacon/') - response = m.func(request=None, *m.args, **m.kwargs) + response = m.func(request=self.request, *m.args, **m.kwargs) self.assertEqual(response.content, b"Thing: Bacon") def test_resolve_match_faillthrough(self): m = self.patterns_no_fallthrough.resolve('/bacon/') with self.assertRaises(urlresolvers.Resolver404): - m.func(request=None, *m.args, **m.kwargs) + m.func(request=self.request, *m.args, **m.kwargs) def test_no_match(self): with self.assertRaises(urlresolvers.Resolver404):