mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-25 19:14:01 +03:00
Added test case for format_suffix_patterns to validate changes introduced with issue #593.
Signed-off-by: Kevin Stone <kevinastone@gmail.com>
This commit is contained in:
parent
2c76212e54
commit
71bd2faa79
75
rest_framework/tests/urlpatterns.py
Normal file
75
rest_framework/tests/urlpatterns.py
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
from django.core import urlresolvers
|
||||||
|
|
||||||
|
from django.test import TestCase
|
||||||
|
from django.test.client import RequestFactory
|
||||||
|
|
||||||
|
from rest_framework.compat import patterns, url, include
|
||||||
|
from rest_framework.urlpatterns import format_suffix_patterns
|
||||||
|
|
||||||
|
|
||||||
|
# A container class for test paths for the test case
|
||||||
|
URLTestPath = namedtuple('URLTestPath', ['path', 'args', 'kwargs'])
|
||||||
|
|
||||||
|
|
||||||
|
def test_view(request, *args, **kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class FormatSuffixTests(TestCase):
|
||||||
|
def _test_urlpatterns(self, urlpatterns, test_paths):
|
||||||
|
factory = RequestFactory()
|
||||||
|
try:
|
||||||
|
urlpatterns = format_suffix_patterns(urlpatterns)
|
||||||
|
except:
|
||||||
|
self.fail("Failed to apply `format_suffix_patterns` on the supplied urlpatterns")
|
||||||
|
resolver = urlresolvers.RegexURLResolver(r'^/', urlpatterns)
|
||||||
|
for test_path in test_paths:
|
||||||
|
request = factory.get(test_path.path)
|
||||||
|
try:
|
||||||
|
callback, callback_args, callback_kwargs = resolver.resolve(request.path_info)
|
||||||
|
except:
|
||||||
|
self.fail("Failed to resolve URL: %s" % request.path_info)
|
||||||
|
self.assertEquals(callback_args, test_path.args)
|
||||||
|
self.assertEquals(callback_kwargs, test_path.kwargs)
|
||||||
|
|
||||||
|
def test_format_suffix(self):
|
||||||
|
urlpatterns = patterns(
|
||||||
|
'',
|
||||||
|
url(r'^test$', test_view),
|
||||||
|
)
|
||||||
|
test_paths = [
|
||||||
|
URLTestPath('/test', (), {}),
|
||||||
|
URLTestPath('/test.api', (), {'format': 'api'}),
|
||||||
|
URLTestPath('/test.asdf', (), {'format': 'asdf'}),
|
||||||
|
]
|
||||||
|
self._test_urlpatterns(urlpatterns, test_paths)
|
||||||
|
|
||||||
|
def test_default_args(self):
|
||||||
|
urlpatterns = patterns(
|
||||||
|
'',
|
||||||
|
url(r'^test$', test_view, {'foo': 'bar'}),
|
||||||
|
)
|
||||||
|
test_paths = [
|
||||||
|
URLTestPath('/test', (), {'foo': 'bar', }),
|
||||||
|
URLTestPath('/test.api', (), {'foo': 'bar', 'format': 'api'}),
|
||||||
|
URLTestPath('/test.asdf', (), {'foo': 'bar', 'format': 'asdf'}),
|
||||||
|
]
|
||||||
|
self._test_urlpatterns(urlpatterns, test_paths)
|
||||||
|
|
||||||
|
def test_included_urls(self):
|
||||||
|
nested_patterns = patterns(
|
||||||
|
'',
|
||||||
|
url(r'^path$', test_view)
|
||||||
|
)
|
||||||
|
urlpatterns = patterns(
|
||||||
|
'',
|
||||||
|
url(r'^test/', include(nested_patterns), {'foo': 'bar'}),
|
||||||
|
)
|
||||||
|
test_paths = [
|
||||||
|
URLTestPath('/test/path', (), {'foo': 'bar', }),
|
||||||
|
URLTestPath('/test/path.api', (), {'foo': 'bar', 'format': 'api'}),
|
||||||
|
URLTestPath('/test/path.asdf', (), {'foo': 'bar', 'format': 'asdf'}),
|
||||||
|
]
|
||||||
|
self._test_urlpatterns(urlpatterns, test_paths)
|
Loading…
Reference in New Issue
Block a user