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_name = self.view_name
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)
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_name = self.view_name
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}
try:

View File

@ -41,7 +41,7 @@ class GenericAPIView(views.APIView):
if serializer_class is None:
class DefaultSerializer(self.model_serializer_class):
class Meta:
class Meta(self.model_serializer_class.Meta):
model = self.model
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.client import RequestFactory
from rest_framework import generics, status, serializers
@ -49,6 +49,13 @@ class ManyToManyDetail(generics.RetrieveAPIView):
model = ManyToManyModel
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):
model = BlogPostComment
@ -76,7 +83,13 @@ class OptionalRelationDetail(generics.RetrieveAPIView):
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('',
url(r'^other/namespace/', include(anchor_urls, namespace='namespacetests', app_name='namespacetests')),
url(r'^basic/$', BasicList.as_view(), name='basicmodel-list'),
url(r'^basic/(?P<pk>\d+)/$', BasicDetail.as_view(), name='basicmodel-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.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):
"""
@ -175,6 +197,15 @@ class TestManyToManyHyperlinkedView(TestCase):
self.assertEquals(response.status_code, status.HTTP_200_OK)
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):
urls = 'rest_framework.tests.hyperlinkedserializers'