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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy