diff options
Diffstat (limited to 'tests/urlpatterns_reverse/tests.py')
| -rw-r--r-- | tests/urlpatterns_reverse/tests.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/urlpatterns_reverse/tests.py b/tests/urlpatterns_reverse/tests.py index 8dbd57a27d..2cb933df37 100644 --- a/tests/urlpatterns_reverse/tests.py +++ b/tests/urlpatterns_reverse/tests.py @@ -382,6 +382,23 @@ class ResolverTests(SimpleTestCase): self.assertEqual(resolver.reverse('named-url2', 'arg'), 'extra/arg/') self.assertEqual(resolver.reverse('named-url2', extra='arg'), 'extra/arg/') + def test_resolver_reverse_conflict(self): + """ + url() name arguments don't need to be unique. The last registered + pattern takes precedence for conflicting names. + """ + resolver = get_resolver('urlpatterns_reverse.named_urls_conflict') + # Without arguments, the last URL in urlpatterns has precedence. + self.assertEqual(resolver.reverse('name-conflict'), 'conflict/') + # With an arg, the last URL in urlpatterns has precedence. + self.assertEqual(resolver.reverse('name-conflict', 'arg'), 'conflict-last/arg/') + # With a kwarg, other url()s can be reversed. + self.assertEqual(resolver.reverse('name-conflict', first='arg'), 'conflict-first/arg/') + self.assertEqual(resolver.reverse('name-conflict', middle='arg'), 'conflict-middle/arg/') + self.assertEqual(resolver.reverse('name-conflict', last='arg'), 'conflict-last/arg/') + # The number and order of the arguments don't interfere with reversing. + self.assertEqual(resolver.reverse('name-conflict', 'arg', 'arg'), 'conflict/arg/arg/') + def test_non_regex(self): """ A Resolver404 is raised if resolving doesn't meet the basic |
