summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2011-04-29 11:49:59 +0000
committerJannis Leidel <jannis@leidel.info>2011-04-29 11:49:59 +0000
commit79afd552788400bbcb8d399df1336ec7100eabd9 (patch)
treee8522e4d151f2122324a760d51fa1addc90a0b4f /tests
parentf459169170910c3d94ee916ed79e2b9ff48915a2 (diff)
Fixed #5925 -- Added new lazily evaluated version of django.core.urlresolvers.reverse. Thanks, SmileyChris, Preston Timmons and Julien Phalip.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16121 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/urlpatterns_reverse/tests.py16
-rw-r--r--tests/regressiontests/urlpatterns_reverse/views.py11
2 files changed, 27 insertions, 0 deletions
diff --git a/tests/regressiontests/urlpatterns_reverse/tests.py b/tests/regressiontests/urlpatterns_reverse/tests.py
index 198d55620c..4f391d9653 100644
--- a/tests/regressiontests/urlpatterns_reverse/tests.py
+++ b/tests/regressiontests/urlpatterns_reverse/tests.py
@@ -10,6 +10,7 @@ from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
from django.shortcuts import redirect
from django.test import TestCase
from django.utils import unittest
+from django.contrib.auth.models import User
import urlconf_outer
import urlconf_inner
@@ -218,6 +219,21 @@ class ResolverTests(unittest.TestCase):
else:
self.assertEqual(t.name, e['name'], 'Wrong URL name. Expected "%s", got "%s".' % (e['name'], t.name))
+class ReverseLazyTest(TestCase):
+ urls = 'regressiontests.urlpatterns_reverse.reverse_lazy_urls'
+
+ def test_redirect_with_lazy_reverse(self):
+ response = self.client.get('/redirect/')
+ self.assertRedirects(response, "/redirected_to/", status_code=301)
+
+ def test_user_permission_with_lazy_reverse(self):
+ user = User.objects.create_user('alfred', 'alfred@example.com', password='testpw')
+ response = self.client.get('/login_required_view/')
+ self.assertRedirects(response, "/login/?next=/login_required_view/", status_code=302)
+ self.client.login(username='alfred', password='testpw')
+ response = self.client.get('/login_required_view/')
+ self.assertEqual(response.status_code, 200)
+
class ReverseShortcutTests(TestCase):
urls = 'regressiontests.urlpatterns_reverse.urls'
diff --git a/tests/regressiontests/urlpatterns_reverse/views.py b/tests/regressiontests/urlpatterns_reverse/views.py
index fdd742382c..b04bf33ff1 100644
--- a/tests/regressiontests/urlpatterns_reverse/views.py
+++ b/tests/regressiontests/urlpatterns_reverse/views.py
@@ -1,4 +1,8 @@
from django.http import HttpResponse
+from django.views.generic import RedirectView
+from django.core.urlresolvers import reverse_lazy
+
+from django.contrib.auth.decorators import user_passes_test
def empty_view(request, *args, **kwargs):
return HttpResponse('')
@@ -15,5 +19,12 @@ class ViewClass(object):
view_class_instance = ViewClass()
+class LazyRedictView(RedirectView):
+ url = reverse_lazy('named-lazy-url-redirected-to')
+
+@user_passes_test(lambda u: u.is_authenticated(), login_url=reverse_lazy('some-login-page'))
+def login_required_view(request):
+ return HttpResponse('Hello you')
+
def bad_view(request, *args, **kwargs):
raise ValueError("I don't think I'm getting good value for this view")