@@ -272,7 +272,7 @@ class FakeResolverMatch(ResolverMatch):
272
272
assert response .status_code == status .HTTP_404_NOT_FOUND
273
273
274
274
275
- class TestAllowedAndDefaultVersion :
275
+ class TestAcceptHeaderAllowedAndDefaultVersion :
276
276
def test_missing_without_default (self ):
277
277
scheme = versioning .AcceptHeaderVersioning
278
278
view = AllowedVersionsView .as_view (versioning_class = scheme )
@@ -318,6 +318,97 @@ def test_missing_with_default_and_none_allowed(self):
318
318
assert response .data == {'version' : 'v2' }
319
319
320
320
321
+ class TestNamespaceAllowedAndDefaultVersion :
322
+ def test_no_namespace_without_default (self ):
323
+ class FakeResolverMatch :
324
+ namespace = None
325
+
326
+ scheme = versioning .NamespaceVersioning
327
+ view = AllowedVersionsView .as_view (versioning_class = scheme )
328
+
329
+ request = factory .get ('/endpoint/' )
330
+ request .resolver_match = FakeResolverMatch
331
+ response = view (request )
332
+ assert response .status_code == status .HTTP_404_NOT_FOUND
333
+
334
+ def test_no_namespace_with_default (self ):
335
+ class FakeResolverMatch :
336
+ namespace = None
337
+
338
+ scheme = versioning .NamespaceVersioning
339
+ view = AllowedAndDefaultVersionsView .as_view (versioning_class = scheme )
340
+
341
+ request = factory .get ('/endpoint/' )
342
+ request .resolver_match = FakeResolverMatch
343
+ response = view (request )
344
+ assert response .status_code == status .HTTP_200_OK
345
+ assert response .data == {'version' : 'v2' }
346
+
347
+ def test_no_match_without_default (self ):
348
+ class FakeResolverMatch :
349
+ namespace = 'no_match'
350
+
351
+ scheme = versioning .NamespaceVersioning
352
+ view = AllowedVersionsView .as_view (versioning_class = scheme )
353
+
354
+ request = factory .get ('/endpoint/' )
355
+ request .resolver_match = FakeResolverMatch
356
+ response = view (request )
357
+ assert response .status_code == status .HTTP_404_NOT_FOUND
358
+
359
+ def test_no_match_with_default (self ):
360
+ class FakeResolverMatch :
361
+ namespace = 'no_match'
362
+
363
+ scheme = versioning .NamespaceVersioning
364
+ view = AllowedAndDefaultVersionsView .as_view (versioning_class = scheme )
365
+
366
+ request = factory .get ('/endpoint/' )
367
+ request .resolver_match = FakeResolverMatch
368
+ response = view (request )
369
+ assert response .status_code == status .HTTP_200_OK
370
+ assert response .data == {'version' : 'v2' }
371
+
372
+ def test_with_default (self ):
373
+ class FakeResolverMatch :
374
+ namespace = 'v1'
375
+
376
+ scheme = versioning .NamespaceVersioning
377
+ view = AllowedAndDefaultVersionsView .as_view (versioning_class = scheme )
378
+
379
+ request = factory .get ('/endpoint/' )
380
+ request .resolver_match = FakeResolverMatch
381
+ response = view (request )
382
+ assert response .status_code == status .HTTP_200_OK
383
+ assert response .data == {'version' : 'v1' }
384
+
385
+ def test_no_match_without_default_but_none_allowed (self ):
386
+ class FakeResolverMatch :
387
+ namespace = 'no_match'
388
+
389
+ scheme = versioning .NamespaceVersioning
390
+ view = AllowedWithNoneVersionsView .as_view (versioning_class = scheme )
391
+
392
+ request = factory .get ('/endpoint/' )
393
+ request .resolver_match = FakeResolverMatch
394
+ response = view (request )
395
+ assert response .status_code == status .HTTP_200_OK
396
+ assert response .data == {'version' : None }
397
+
398
+ def test_no_match_with_default_and_none_allowed (self ):
399
+ class FakeResolverMatch :
400
+ namespace = 'no_match'
401
+
402
+ scheme = versioning .NamespaceVersioning
403
+ view = AllowedWithNoneAndDefaultVersionsView .as_view (versioning_class = scheme )
404
+
405
+ request = factory .get ('/endpoint/' )
406
+ request .resolver_match = FakeResolverMatch
407
+ response = view (request )
408
+ assert response .status_code == status .HTTP_200_OK
409
+ assert response .data == {'version' : 'v2' }
410
+
411
+
321
412
class TestHyperlinkedRelatedField (URLPatternsTestCase , APITestCase ):
322
413
included = [
323
414
path ('namespaced/<int:pk>/' , dummy_pk_view , name = 'namespaced' ),
0 commit comments