1
- from .utils import MockObject , MockQueryset , UsingURLPatterns
1
+ from .utils import UsingURLPatterns
2
2
from django .conf .urls import include , url
3
- from django .core .exceptions import ObjectDoesNotExist
4
3
from rest_framework import serializers
5
4
from rest_framework import status , versioning
6
5
from rest_framework .decorators import APIView
@@ -33,8 +32,8 @@ def get(self, request, *args, **kwargs):
33
32
34
33
factory = APIRequestFactory ()
35
34
36
- mock_view = lambda request : None
37
- dummy_view = lambda request , pk : None
35
+ dummy_view = lambda request : None
36
+ dummy_pk_view = lambda request , pk : None
38
37
39
38
40
39
class TestRequestVersion :
@@ -112,14 +111,14 @@ class FakeResolverMatch:
112
111
113
112
class TestURLReversing (UsingURLPatterns , APITestCase ):
114
113
included = [
115
- url (r'^namespaced/$' , mock_view , name = 'another' ),
116
- url (r'^example/(?P<pk>\d+)/$' , dummy_view , name = 'example-detail' )
114
+ url (r'^namespaced/$' , dummy_view , name = 'another' ),
115
+ url (r'^example/(?P<pk>\d+)/$' , dummy_pk_view , name = 'example-detail' )
117
116
]
118
117
119
118
urlpatterns = [
120
119
url (r'^v1/' , include (included , namespace = 'v1' )),
121
- url (r'^another/$' , mock_view , name = 'another' ),
122
- url (r'^(?P<version>[^/]+)/another/$' , mock_view , name = 'another' ),
120
+ url (r'^another/$' , dummy_view , name = 'another' ),
121
+ url (r'^(?P<version>[^/]+)/another/$' , dummy_view , name = 'another' ),
123
122
]
124
123
125
124
def test_reverse_unversioned (self ):
@@ -230,7 +229,7 @@ class FakeResolverMatch:
230
229
231
230
class TestHyperlinkedRelatedField (UsingURLPatterns , APITestCase ):
232
231
included = [
233
- url (r'^namespaced/(?P<pk>\d+)/$' , mock_view , name = 'namespaced' ),
232
+ url (r'^namespaced/(?P<pk>\d+)/$' , dummy_view , name = 'namespaced' ),
234
233
]
235
234
236
235
urlpatterns = [
@@ -241,28 +240,20 @@ class TestHyperlinkedRelatedField(UsingURLPatterns, APITestCase):
241
240
def setUp (self ):
242
241
super (TestHyperlinkedRelatedField , self ).setUp ()
243
242
244
- class HyperlinkedMockQueryset (MockQueryset ):
245
- def get (self , ** lookup ):
246
- for item in self .items :
247
- if item .pk == int (lookup .get ('pk' , - 1 )):
248
- return item
249
- raise ObjectDoesNotExist ()
250
-
251
- self .queryset = HyperlinkedMockQueryset ([
252
- MockObject (pk = 1 , name = 'foo' ),
253
- MockObject (pk = 2 , name = 'bar' ),
254
- MockObject (pk = 3 , name = 'baz' )
255
- ])
243
+ class MockQueryset (object ):
244
+ def get (self , pk ):
245
+ return 'object %s' % pk
246
+
256
247
self .field = serializers .HyperlinkedRelatedField (
257
248
view_name = 'namespaced' ,
258
- queryset = self . queryset
249
+ queryset = MockQueryset ()
259
250
)
260
- request = factory .post ('/' , urlconf = 'tests.test_versioning ' )
251
+ request = factory .get ('/' )
261
252
request .versioning_scheme = NamespaceVersioning ()
262
253
request .version = 'v1'
263
254
self .field ._context = {'request' : request }
264
255
265
256
def test_bug_2489 (self ):
266
- self .field .to_internal_value ('/v1/namespaced/3/' )
257
+ assert self .field .to_internal_value ('/v1/namespaced/3/' ) == 'object 3'
267
258
with pytest .raises (serializers .ValidationError ):
268
259
self .field .to_internal_value ('/v2/namespaced/3/' )
0 commit comments