From 00b92ee949dfa9d23098ced072d9735673eb2b2a Mon Sep 17 00:00:00 2001 From: Rocky Meza Date: Wed, 24 Dec 2014 05:45:39 -0700 Subject: [PATCH] [DONT MERGE] Failing test to illustrate #2333 --- tests/namespaced_urls.py | 32 ++++++++++++++++++++++++++++++++ tests/test_routers.py | 10 ++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tests/namespaced_urls.py diff --git a/tests/namespaced_urls.py b/tests/namespaced_urls.py new file mode 100644 index 000000000..5fea59f9c --- /dev/null +++ b/tests/namespaced_urls.py @@ -0,0 +1,32 @@ +from django.conf.urls import url, include +from django.db import models + +from rest_framework import serializers, viewsets, routers + + +class NamespacedRouterTestModel(models.Model): + uuid = models.CharField(max_length=20) + text = models.CharField(max_length=200) + + +class NoteSerializer(serializers.HyperlinkedModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='api-namespace:routertestmodel-detail', lookup_field='uuid') + + class Meta: + model = NamespacedRouterTestModel + fields = ('url', 'uuid', 'text') + + +class NoteViewSet(viewsets.ModelViewSet): + queryset = NamespacedRouterTestModel.objects.all() + serializer_class = NoteSerializer + lookup_field = 'uuid' + +router = routers.DefaultRouter() + +router.register(r'note', NoteViewSet) + + +urlpatterns = [ + url('^namespaced-api/', include(router.urls, namespace='api-namespace')), +] diff --git a/tests/test_routers.py b/tests/test_routers.py index 06ab8103a..04e5bcebd 100644 --- a/tests/test_routers.py +++ b/tests/test_routers.py @@ -321,3 +321,13 @@ class TestRootWithAListlessViewset(TestCase): request = factory.get('/') response = self.view(request) self.assertEqual(response.data, {}) + + +class TestNamespacedDefaultRouter(TestCase): + urls = 'tests.namespaced_urls' + + def test_api_root(self): + from django.core.urlresolvers import reverse + url = reverse('api-namespace:api-root') + response = self.client.get(url) + self.assertEqual(response.data['note'], 'http://testserver/namespaced-api/note/')