aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/tests.py56
-rw-r--r--tests/urls.py3
-rw-r--r--tests/views.py7
3 files changed, 43 insertions, 23 deletions
diff --git a/tests/tests.py b/tests/tests.py
index fcebb50..7d6436e 100644
--- a/tests/tests.py
+++ b/tests/tests.py
@@ -11,6 +11,7 @@ from django.contrib.auth.models import User
from django.http import HttpResponse
from django.test import TestCase
from django.template import Template, Context
+from django import VERSION
from dingus import Dingus
import thread
@@ -158,31 +159,42 @@ class DebugToolbarTestCase(BaseTestCase):
middleware.process_request(request)
self.assertFalse(isinstance(request.urlconf, basestring))
- def test_with_process_view(self):
- request = self.request
- response = self.response
-
- def _test_view(request):
- return HttpResponse('')
-
+ def _resolve_stats(self, path):
+ # takes stats from RequestVars panel
+ self.request.path = path
with Settings(DEBUG=True):
panel = self.toolbar.get_panel(RequestVarsDebugPanel)
- panel.process_request(request)
- panel.process_view(request, _test_view, [], {})
- panel.process_response(request, response)
- content = panel.content()
- self.assertTrue('tests.tests._test_view' in content, content)
+ panel.process_request(self.request)
+ panel.process_response(self.request, self.response)
+ return self.toolbar.stats['requestvars']
+
+ def test_url_resolving_positional(self):
+ stats = self._resolve_stats('/resolving1/a/b/')
+ if tuple(VERSION[:2]) >= (1, 3):
+ self.assertEquals(stats['view_urlname'], 'positional-resolving') # Django >= 1.3
+ else:
+ self.assertEquals(stats['view_urlname'], '<unavailable>') # Django < 1.3
+ self.assertEquals(stats['view_func'], 'tests.views.resolving_view')
+ self.assertEquals(stats['view_args'], ('a', 'b'))
+ self.assertEquals(stats['view_kwargs'], {})
+
+ def test_url_resolving_named(self):
+ stats = self._resolve_stats('/resolving2/a/b/')
+ self.assertEquals(stats['view_args'], ())
+ self.assertEquals(stats['view_kwargs'], {'arg1': 'a', 'arg2': 'b'})
+
+ def test_url_resolving_mixed(self):
+ stats = self._resolve_stats('/resolving3/a/')
+ self.assertEquals(stats['view_args'], ('a',))
+ self.assertEquals(stats['view_kwargs'], {'arg2': 'default'})
+
+ def test_url_resolving_bad(self):
+ stats = self._resolve_stats('/non-existing-url/')
+ self.assertEquals(stats['view_urlname'], 'None')
+ self.assertEquals(stats['view_args'], 'None')
+ self.assertEquals(stats['view_kwargs'], 'None')
+ self.assertEquals(stats['view_func'], '<no view>')
- def test_without_process_view(self):
- request = self.request
- response = self.response
-
- with Settings(DEBUG=True):
- panel = self.toolbar.get_panel(RequestVarsDebugPanel)
- panel.process_request(request)
- panel.process_response(request, response)
- content = panel.content()
- self.assertTrue('&lt;no view&gt;' in content, content)
class DebugToolbarNameFromObjectTest(BaseTestCase):
def test_func(self):
diff --git a/tests/urls.py b/tests/urls.py
index 359fd8f..a556703 100644
--- a/tests/urls.py
+++ b/tests/urls.py
@@ -11,5 +11,8 @@ admin.autodiscover()
urlpatterns = patterns('',
# This pattern should be last to ensure tests still work
+ url(r'^resolving1/(.+)/(.+)/$', 'tests.views.resolving_view', name = 'positional-resolving'),
+ url(r'^resolving2/(?P<arg1>.+)/(?P<arg2>.+)/$', 'tests.views.resolving_view'),
+ url(r'^resolving3/(.+)/$', 'tests.views.resolving_view', { 'arg2' : 'default' }),
url(r'^execute_sql/$', 'tests.views.execute_sql'),
)
diff --git a/tests/views.py b/tests/views.py
index f989dcd..909a784 100644
--- a/tests/views.py
+++ b/tests/views.py
@@ -4,4 +4,9 @@ from django.http import HttpResponse
def execute_sql(request):
list(User.objects.all())
- return HttpResponse() \ No newline at end of file
+ return HttpResponse()
+
+def resolving_view(request, arg1, arg2):
+ # see test_url_resolving in tests.py
+ return HttpResponse()
+