@@ -262,7 +262,7 @@ class FakeResolverMatch:
262262 assert response .status_code == status .HTTP_404_NOT_FOUND
263263
264264
265- class TestAllowedAndDefaultVersion :
265+ class TestAcceptHeaderAllowedAndDefaultVersion :
266266 def test_missing_without_default (self ):
267267 scheme = versioning .AcceptHeaderVersioning
268268 view = AllowedVersionsView .as_view (versioning_class = scheme )
@@ -308,6 +308,97 @@ def test_missing_with_default_and_none_allowed(self):
308308 assert response .data == {'version' : 'v2' }
309309
310310
311+ class TestNamespaceAllowedAndDefaultVersion :
312+ def test_no_namespace_without_default (self ):
313+ class FakeResolverMatch :
314+ namespace = None
315+
316+ scheme = versioning .NamespaceVersioning
317+ view = AllowedVersionsView .as_view (versioning_class = scheme )
318+
319+ request = factory .get ('/endpoint/' )
320+ request .resolver_match = FakeResolverMatch
321+ response = view (request )
322+ assert response .status_code == status .HTTP_404_NOT_FOUND
323+
324+ def test_no_namespace_with_default (self ):
325+ class FakeResolverMatch :
326+ namespace = None
327+
328+ scheme = versioning .NamespaceVersioning
329+ view = AllowedAndDefaultVersionsView .as_view (versioning_class = scheme )
330+
331+ request = factory .get ('/endpoint/' )
332+ request .resolver_match = FakeResolverMatch
333+ response = view (request )
334+ assert response .status_code == status .HTTP_200_OK
335+ assert response .data == {'version' : 'v2' }
336+
337+ def test_no_match_without_default (self ):
338+ class FakeResolverMatch :
339+ namespace = 'no_match'
340+
341+ scheme = versioning .NamespaceVersioning
342+ view = AllowedVersionsView .as_view (versioning_class = scheme )
343+
344+ request = factory .get ('/endpoint/' )
345+ request .resolver_match = FakeResolverMatch
346+ response = view (request )
347+ assert response .status_code == status .HTTP_404_NOT_FOUND
348+
349+ def test_no_match_with_default (self ):
350+ class FakeResolverMatch :
351+ namespace = 'no_match'
352+
353+ scheme = versioning .NamespaceVersioning
354+ view = AllowedAndDefaultVersionsView .as_view (versioning_class = scheme )
355+
356+ request = factory .get ('/endpoint/' )
357+ request .resolver_match = FakeResolverMatch
358+ response = view (request )
359+ assert response .status_code == status .HTTP_200_OK
360+ assert response .data == {'version' : 'v2' }
361+
362+ def test_with_default (self ):
363+ class FakeResolverMatch :
364+ namespace = 'v2'
365+
366+ scheme = versioning .NamespaceVersioning
367+ view = AllowedAndDefaultVersionsView .as_view (versioning_class = scheme )
368+
369+ request = factory .get ('/endpoint/' )
370+ request .resolver_match = FakeResolverMatch
371+ response = view (request )
372+ assert response .status_code == status .HTTP_200_OK
373+ assert response .data == {'version' : 'v2' }
374+
375+ def test_no_match_without_default_but_none_allowed (self ):
376+ class FakeResolverMatch :
377+ namespace = 'no_match'
378+
379+ scheme = versioning .NamespaceVersioning
380+ view = AllowedWithNoneVersionsView .as_view (versioning_class = scheme )
381+
382+ request = factory .get ('/endpoint/' )
383+ request .resolver_match = FakeResolverMatch
384+ response = view (request )
385+ assert response .status_code == status .HTTP_200_OK
386+ assert response .data == {'version' : None }
387+
388+ def test_no_match_with_default_and_none_allowed (self ):
389+ class FakeResolverMatch :
390+ namespace = 'no_match'
391+
392+ scheme = versioning .NamespaceVersioning
393+ view = AllowedWithNoneAndDefaultVersionsView .as_view (versioning_class = scheme )
394+
395+ request = factory .get ('/endpoint/' )
396+ request .resolver_match = FakeResolverMatch
397+ response = view (request )
398+ assert response .status_code == status .HTTP_200_OK
399+ assert response .data == {'version' : 'v2' }
400+
401+
311402class TestHyperlinkedRelatedField (URLPatternsTestCase , APITestCase ):
312403 included = [
313404 url (r'^namespaced/(?P<pk>\d+)/$' , dummy_pk_view , name = 'namespaced' ),
0 commit comments