Skip to content

Commit 030f01a

Browse files
author
Brandon Cazander
committed
Reorganize tests.
1 parent f3067a7 commit 030f01a

File tree

3 files changed

+43
-51
lines changed

3 files changed

+43
-51
lines changed

tests/test_relations.py

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,11 @@
11
from .utils import mock_reverse, fail_reverse, BadType, MockObject, MockQueryset
2-
from django.conf.urls import patterns, url, include
3-
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
2+
from django.core.exceptions import ImproperlyConfigured
43
from django.utils.datastructures import MultiValueDict
54
from rest_framework import serializers
65
from rest_framework.fields import empty
7-
from rest_framework.test import APISimpleTestCase, APIRequestFactory
8-
from rest_framework.versioning import NamespaceVersioning
6+
from rest_framework.test import APISimpleTestCase
97
import pytest
108

11-
factory = APIRequestFactory()
12-
13-
dummy_view = lambda request, pk: None
14-
15-
included_patterns = [
16-
url(r'^example/(?P<pk>\d+)/$', dummy_view, name='example-detail')
17-
]
18-
19-
urlpatterns = patterns(
20-
'',
21-
url(r'^v1/', include(included_patterns, namespace='v1')),
22-
url(r'^example/(?P<pk>\d+)/$', dummy_view, name='example-detail')
23-
)
24-
259

2610
class TestStringRelatedField(APISimpleTestCase):
2711
def setUp(self):
@@ -64,35 +48,6 @@ def test_pk_representation(self):
6448
assert representation == self.instance.pk
6549

6650

67-
class TestHyperlinkedRelatedField(APISimpleTestCase):
68-
urls = 'tests.test_relations'
69-
70-
def setUp(self):
71-
class HyperlinkedMockQueryset(MockQueryset):
72-
def get(self, **lookup):
73-
for item in self.items:
74-
if item.pk == int(lookup.get('pk', -1)):
75-
return item
76-
raise ObjectDoesNotExist()
77-
78-
self.queryset = HyperlinkedMockQueryset([
79-
MockObject(pk=1, name='foo'),
80-
MockObject(pk=2, name='bar'),
81-
MockObject(pk=3, name='baz')
82-
])
83-
self.field = serializers.HyperlinkedRelatedField(
84-
view_name='example-detail',
85-
queryset=self.queryset
86-
)
87-
request = factory.post('/')
88-
request.versioning_scheme = NamespaceVersioning()
89-
self.field._context = {'request': request}
90-
91-
def test_bug_2489(self):
92-
self.field.to_internal_value('/example/3/')
93-
self.field.to_internal_value('/v1/example/3/')
94-
95-
9651
class TestHyperlinkedIdentityField(APISimpleTestCase):
9752
def setUp(self):
9853
self.instance = MockObject(pk=1, name='foo')

tests/test_versioning.py

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
from .utils import MockObject, MockQueryset
12
from django.conf.urls import include, url
3+
from django.core.exceptions import ObjectDoesNotExist
4+
from rest_framework import serializers
25
from rest_framework import status, versioning
36
from rest_framework.decorators import APIView
47
from rest_framework.response import Response
58
from rest_framework.reverse import reverse
6-
from rest_framework.test import APIRequestFactory, APITestCase
9+
from rest_framework.test import APIRequestFactory, APITestCase, APISimpleTestCase
10+
from rest_framework.versioning import NamespaceVersioning
711

812

913
class RequestVersionView(APIView):
@@ -29,15 +33,18 @@ def get(self, request, *args, **kwargs):
2933
factory = APIRequestFactory()
3034

3135
mock_view = lambda request: None
36+
dummy_view = lambda request, pk: None
3237

3338
included_patterns = [
3439
url(r'^namespaced/$', mock_view, name='another'),
40+
url(r'^example/(?P<pk>\d+)/$', dummy_view, name='example-detail')
3541
]
3642

3743
urlpatterns = [
3844
url(r'^v1/', include(included_patterns, namespace='v1')),
3945
url(r'^another/$', mock_view, name='another'),
40-
url(r'^(?P<version>[^/]+)/another/$', mock_view, name='another')
46+
url(r'^(?P<version>[^/]+)/another/$', mock_view, name='another'),
47+
url(r'^example/(?P<pk>\d+)/$', dummy_view, name='example-detail')
4148
]
4249

4350

@@ -221,3 +228,33 @@ class FakeResolverMatch:
221228
request.resolver_match = FakeResolverMatch
222229
response = view(request, version='v3')
223230
assert response.status_code == status.HTTP_404_NOT_FOUND
231+
232+
233+
class TestHyperlinkedRelatedField(APISimpleTestCase):
234+
urls = 'tests.test_versioning'
235+
236+
def setUp(self):
237+
238+
class HyperlinkedMockQueryset(MockQueryset):
239+
def get(self, **lookup):
240+
for item in self.items:
241+
if item.pk == int(lookup.get('pk', -1)):
242+
return item
243+
raise ObjectDoesNotExist()
244+
245+
self.queryset = HyperlinkedMockQueryset([
246+
MockObject(pk=1, name='foo'),
247+
MockObject(pk=2, name='bar'),
248+
MockObject(pk=3, name='baz')
249+
])
250+
self.field = serializers.HyperlinkedRelatedField(
251+
view_name='example-detail',
252+
queryset=self.queryset
253+
)
254+
request = factory.post('/', urlconf='tests.test_versioning')
255+
request.versioning_scheme = NamespaceVersioning()
256+
self.field._context = {'request': request}
257+
258+
def test_bug_2489(self):
259+
self.field.to_internal_value('/example/3/')
260+
self.field.to_internal_value('/v1/example/3/')

tests/urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""
22
Blank URLConf just to keep the test suite happy
33
"""
4-
from tests import test_relations
4+
from django.conf.urls import patterns
55

6-
urlpatterns = test_relations.urlpatterns
6+
urlpatterns = patterns('')

0 commit comments

Comments
 (0)