[#3859] added tests for this feature

This commit is contained in:
Faddey 2016-01-21 17:15:09 +02:00
parent 826a47e9dd
commit 725dd6ba3f

View File

@ -47,6 +47,12 @@ class MockViewSet(viewsets.ModelViewSet):
serializer_class = None serializer_class = None
class PrefixedLookupsViewSet(viewsets.ModelViewSet):
queryset = RouterTestModel.objects.all()
serializer_class = NoteSerializer
pre_lookup_prefix = '~'
notes_router = SimpleRouter() notes_router = SimpleRouter()
notes_router.register(r'notes', NoteViewSet) notes_router.register(r'notes', NoteViewSet)
@ -56,11 +62,15 @@ kwarged_notes_router.register(r'notes', KWargedNoteViewSet)
namespaced_router = DefaultRouter() namespaced_router = DefaultRouter()
namespaced_router.register(r'example', MockViewSet, base_name='example') namespaced_router.register(r'example', MockViewSet, base_name='example')
prefixed_lookups_router = DefaultRouter()
prefixed_lookups_router.register(r'example', PrefixedLookupsViewSet)
urlpatterns = [ urlpatterns = [
url(r'^non-namespaced/', include(namespaced_router.urls)), url(r'^non-namespaced/', include(namespaced_router.urls)),
url(r'^namespaced/', include(namespaced_router.urls, namespace='example')), url(r'^namespaced/', include(namespaced_router.urls, namespace='example')),
url(r'^example/', include(notes_router.urls)), url(r'^example/', include(notes_router.urls)),
url(r'^example2/', include(kwarged_notes_router.urls)), url(r'^example2/', include(kwarged_notes_router.urls)),
url(r'^prefixed/', include(prefixed_lookups_router.urls)),
] ]
@ -218,6 +228,24 @@ class TestLookupUrlKwargs(TestCase):
) )
class TestPreLookupPrefixes(TestCase):
urls = 'tests.test_routers'
def setUp(self):
self.obj = RouterTestModel.objects.create(uuid='123', text='foo bar')
def test_prefixed_lookup(self):
response = self.client.get('/prefixed/example/~{}/'.format(self.obj.id))
self.assertEqual(
response.data,
{
"url": "http://testserver/example/notes/123/",
"uuid": "123", "text": "foo bar"
}
)
class TestTrailingSlashIncluded(TestCase): class TestTrailingSlashIncluded(TestCase):
def setUp(self): def setUp(self):
class NoteViewSet(viewsets.ModelViewSet): class NoteViewSet(viewsets.ModelViewSet):