test written and some code fixed

This commit is contained in:
Ludwig Kraatz 2012-12-04 15:16:31 +01:00
parent 47a1f05ec0
commit 28a5b73c25
3 changed files with 35 additions and 4 deletions

View File

@ -550,7 +550,7 @@ class HyperlinkedRelatedField(RelatedField):
view_namespace = self.view_namespace or getattr(self.parent.opts, 'view_namespace', None) view_namespace = self.view_namespace or getattr(self.parent.opts, 'view_namespace', None)
view_name = self.view_name view_name = self.view_name
if view_namespace: if view_namespace:
view_name = '%(namespace)s:%(name)' % {'namespace': view_namespace, 'name':view_name} view_name = '%(namespace)s:%(name)s' % {'namespace': view_namespace, 'name': view_name}
request = self.context.get('request', None) request = self.context.get('request', None)
format = self.format or self.context.get('format', None) format = self.format or self.context.get('format', None)
@ -662,7 +662,7 @@ class HyperlinkedIdentityField(Field):
view_namespace = self.view_namespace or getattr(self.parent.opts, 'view_namespace', None) view_namespace = self.view_namespace or getattr(self.parent.opts, 'view_namespace', None)
view_name = self.view_name view_name = self.view_name
if view_namespace: if view_namespace:
view_name = '%(namespace)s:%(name)' % {'namespace': view_namespace, 'name':view_name} view_name = '%(namespace)s:%(name)s' % {'namespace': view_namespace, 'name': view_name}
kwargs = {self.pk_url_kwarg: obj.pk} kwargs = {self.pk_url_kwarg: obj.pk}
try: try:

View File

@ -41,7 +41,7 @@ class GenericAPIView(views.APIView):
if serializer_class is None: if serializer_class is None:
class DefaultSerializer(self.model_serializer_class): class DefaultSerializer(self.model_serializer_class):
class Meta: class Meta(self.model_serializer_class.Meta):
model = self.model model = self.model
serializer_class = DefaultSerializer serializer_class = DefaultSerializer

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls.defaults import patterns, url, include
from django.test import TestCase from django.test import TestCase
from django.test.client import RequestFactory from django.test.client import RequestFactory
from rest_framework import generics, status, serializers from rest_framework import generics, status, serializers
@ -49,6 +49,13 @@ class ManyToManyDetail(generics.RetrieveAPIView):
model = ManyToManyModel model = ManyToManyModel
model_serializer_class = serializers.HyperlinkedModelSerializer model_serializer_class = serializers.HyperlinkedModelSerializer
class NamespacedManyToManySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
view_namespace = 'namespacetests'
class NamespacedManyToManyDetail(generics.RetrieveAPIView):
model = ManyToManyModel
model_serializer_class = NamespacedManyToManySerializer
class BlogPostCommentListCreate(generics.ListCreateAPIView): class BlogPostCommentListCreate(generics.ListCreateAPIView):
model = BlogPostComment model = BlogPostComment
@ -76,7 +83,13 @@ class OptionalRelationDetail(generics.RetrieveAPIView):
model_serializer_class = serializers.HyperlinkedModelSerializer model_serializer_class = serializers.HyperlinkedModelSerializer
anchor_urls = patterns('',
url(r'^(?P<pk>\d+)/$', AnchorDetail.as_view(), name='anchor-detail'),
url(r'^manytomany/(?P<pk>\d+)/$', NamespacedManyToManyDetail.as_view(), name='manytomanymodel-detail'),
)
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^other/namespace/', include(anchor_urls, namespace='namespacetests', app_name='namespacetests')),
url(r'^basic/$', BasicList.as_view(), name='basicmodel-list'), url(r'^basic/$', BasicList.as_view(), name='basicmodel-list'),
url(r'^basic/(?P<pk>\d+)/$', BasicDetail.as_view(), name='basicmodel-detail'), url(r'^basic/(?P<pk>\d+)/$', BasicDetail.as_view(), name='basicmodel-detail'),
url(r'^anchor/(?P<pk>\d+)/$', AnchorDetail.as_view(), name='anchor-detail'), url(r'^anchor/(?P<pk>\d+)/$', AnchorDetail.as_view(), name='anchor-detail'),
@ -156,6 +169,15 @@ class TestManyToManyHyperlinkedView(TestCase):
}] }]
self.list_view = ManyToManyList.as_view() self.list_view = ManyToManyList.as_view()
self.detail_view = ManyToManyDetail.as_view() self.detail_view = ManyToManyDetail.as_view()
self.namespaced_data = [{
'url': 'http://testserver/other/namespace/manytomany/1/',
'rel': [
'http://testserver/other/namespace/1/',
'http://testserver/other/namespace/2/',
'http://testserver/other/namespace/3/',
]
}]
self.namespaced_detail_view = NamespacedManyToManyDetail.as_view()
def test_get_list_view(self): def test_get_list_view(self):
""" """
@ -175,6 +197,15 @@ class TestManyToManyHyperlinkedView(TestCase):
self.assertEquals(response.status_code, status.HTTP_200_OK) self.assertEquals(response.status_code, status.HTTP_200_OK)
self.assertEquals(response.data, self.data[0]) self.assertEquals(response.data, self.data[0])
def test_get_detail_namespaced_view(self):
"""
GET requests to a View in a namespace should succeed.
"""
request = factory.get('/other/namespace/manytomany/1/')
response = self.namespaced_detail_view(request, pk=1).render()
self.assertEquals(response.status_code, status.HTTP_200_OK)
self.assertEquals(response.data, self.namespaced_data[0])
class TestCreateWithForeignKeys(TestCase): class TestCreateWithForeignKeys(TestCase):
urls = 'rest_framework.tests.hyperlinkedserializers' urls = 'rest_framework.tests.hyperlinkedserializers'