diff options
| author | Brandon Cazander | 2015-01-28 17:08:34 -0800 |
|---|---|---|
| committer | Brandon Cazander | 2015-02-02 20:37:33 -0800 |
| commit | 77d061d234e03004f34058028707ecddfc730fae (patch) | |
| tree | b67e2414ba475a2122cb46dcd737b1a39b92911e /tests | |
| parent | e63f49bd1d55501f766ca2e3f9c0c9fa3cfa19ab (diff) | |
| download | django-rest-framework-77d061d234e03004f34058028707ecddfc730fae.tar.bz2 | |
Provide rest_framework.resolve. Fixes #2489
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_relations.py | 50 | ||||
| -rw-r--r-- | tests/urls.py | 4 |
2 files changed, 50 insertions, 4 deletions
diff --git a/tests/test_relations.py b/tests/test_relations.py index fbe176e2..b82a1f2a 100644 --- a/tests/test_relations.py +++ b/tests/test_relations.py @@ -1,11 +1,28 @@ from .utils import mock_reverse, fail_reverse, BadType, MockObject, MockQueryset -from django.core.exceptions import ImproperlyConfigured +from django.conf.urls import patterns, url, include +from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist from django.utils.datastructures import MultiValueDict from rest_framework import serializers from rest_framework.fields import empty -from rest_framework.test import APISimpleTestCase +from rest_framework.test import APISimpleTestCase, APIRequestFactory +from rest_framework.versioning import NamespaceVersioning import pytest +factory = APIRequestFactory() +request = factory.get('/') # Just to ensure we have a request in the serializer context + +dummy_view = lambda request, pk: None + +included_patterns = [ + url(r'^example/(?P<pk>\d+)/$', dummy_view, name='example-detail') +] + +urlpatterns = patterns( + '', + url(r'^v1/', include(included_patterns, namespace='v1')), + url(r'^example/(?P<pk>\d+)/$', dummy_view, name='example-detail') +) + class TestStringRelatedField(APISimpleTestCase): def setUp(self): @@ -48,6 +65,35 @@ class TestPrimaryKeyRelatedField(APISimpleTestCase): assert representation == self.instance.pk +class TestHyperlinkedRelatedField(APISimpleTestCase): + urls = 'tests.test_relations' + + def setUp(self): + class HyperlinkedMockQueryset(MockQueryset): + def get(self, **lookup): + for item in self.items: + if item.pk == int(lookup.get('pk', -1)): + return item + raise ObjectDoesNotExist() + + self.queryset = HyperlinkedMockQueryset([ + MockObject(pk=1, name='foo'), + MockObject(pk=2, name='bar'), + MockObject(pk=3, name='baz') + ]) + self.field = serializers.HyperlinkedRelatedField( + view_name='example-detail', + queryset=self.queryset + ) + request = factory.post('/') + request.versioning_scheme = NamespaceVersioning() + self.field._context = {'request': request} + + def test_bug_2489(self): + self.field.to_internal_value('/example/3/') + self.field.to_internal_value('/v1/example/3/') + + class TestHyperlinkedIdentityField(APISimpleTestCase): def setUp(self): self.instance = MockObject(pk=1, name='foo') diff --git a/tests/urls.py b/tests/urls.py index 41f527df..742e361d 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -1,6 +1,6 @@ """ Blank URLConf just to keep the test suite happy """ -from django.conf.urls import patterns +from tests import test_relations -urlpatterns = patterns('') +urlpatterns = test_relations.urlpatterns |
