mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Test queryset parameter of HyperlinkedRelatedField
This commit is contained in:
parent
65a0d083d6
commit
f58214e371
|
@ -31,6 +31,14 @@ class PhotoSerializer(serializers.Serializer):
|
||||||
return Photo(**attrs)
|
return Photo(**attrs)
|
||||||
|
|
||||||
|
|
||||||
|
class ManyToManyHyperlinkedModelSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
|
rel = serializers.HyperlinkedRelatedField(
|
||||||
|
many=True,
|
||||||
|
view_name='anchor-detail',
|
||||||
|
queryset=Anchor.objects.filter(text='foo'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class AlbumSerializer(serializers.ModelSerializer):
|
class AlbumSerializer(serializers.ModelSerializer):
|
||||||
url = serializers.HyperlinkedIdentityField(view_name='album-detail', lookup_field='title')
|
url = serializers.HyperlinkedIdentityField(view_name='album-detail', lookup_field='title')
|
||||||
|
|
||||||
|
@ -64,6 +72,16 @@ class ManyToManyDetail(generics.RetrieveAPIView):
|
||||||
model_serializer_class = serializers.HyperlinkedModelSerializer
|
model_serializer_class = serializers.HyperlinkedModelSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class FilteredManyToManyList(generics.ListAPIView):
|
||||||
|
model = ManyToManyModel
|
||||||
|
model_serializer_class = ManyToManyHyperlinkedModelSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class FilteredManyToManyDetail(generics.RetrieveAPIView):
|
||||||
|
model = ManyToManyModel
|
||||||
|
model_serializer_class = ManyToManyHyperlinkedModelSerializer
|
||||||
|
|
||||||
|
|
||||||
class BlogPostCommentListCreate(generics.ListCreateAPIView):
|
class BlogPostCommentListCreate(generics.ListCreateAPIView):
|
||||||
model = BlogPostComment
|
model = BlogPostComment
|
||||||
serializer_class = BlogPostCommentSerializer
|
serializer_class = BlogPostCommentSerializer
|
||||||
|
@ -101,6 +119,7 @@ urlpatterns = patterns(
|
||||||
url(r'^anchor/(?P<pk>\d+)/$', AnchorDetail.as_view(), name='anchor-detail'),
|
url(r'^anchor/(?P<pk>\d+)/$', AnchorDetail.as_view(), name='anchor-detail'),
|
||||||
url(r'^manytomany/$', ManyToManyList.as_view(), name='manytomanymodel-list'),
|
url(r'^manytomany/$', ManyToManyList.as_view(), name='manytomanymodel-list'),
|
||||||
url(r'^manytomany/(?P<pk>\d+)/$', ManyToManyDetail.as_view(), name='manytomanymodel-detail'),
|
url(r'^manytomany/(?P<pk>\d+)/$', ManyToManyDetail.as_view(), name='manytomanymodel-detail'),
|
||||||
|
url(r'^filteredmanytomany/$', FilteredManyToManyList.as_view(), name='filtered-manytomanymodel-list'),
|
||||||
url(r'^posts/(?P<pk>\d+)/$', BlogPostDetail.as_view(), name='blogpost-detail'),
|
url(r'^posts/(?P<pk>\d+)/$', BlogPostDetail.as_view(), name='blogpost-detail'),
|
||||||
url(r'^comments/$', BlogPostCommentListCreate.as_view(), name='blogpostcomment-list'),
|
url(r'^comments/$', BlogPostCommentListCreate.as_view(), name='blogpostcomment-list'),
|
||||||
url(r'^comments/(?P<pk>\d+)/$', BlogPostCommentDetail.as_view(), name='blogpostcomment-detail'),
|
url(r'^comments/(?P<pk>\d+)/$', BlogPostCommentDetail.as_view(), name='blogpostcomment-detail'),
|
||||||
|
@ -195,6 +214,52 @@ class TestManyToManyHyperlinkedView(TestCase):
|
||||||
self.assertEqual(response.data, self.data[0])
|
self.assertEqual(response.data, self.data[0])
|
||||||
|
|
||||||
|
|
||||||
|
class TestFilteredManyToManyHyperlinkedView(TestCase):
|
||||||
|
urls = 'tests.test_hyperlinkedserializers'
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
"""
|
||||||
|
Create 3 BasicModel instances.
|
||||||
|
"""
|
||||||
|
items = ['foo', 'bar', 'baz']
|
||||||
|
anchors = []
|
||||||
|
for item in items:
|
||||||
|
anchor = Anchor(text=item)
|
||||||
|
anchor.save()
|
||||||
|
anchors.append(anchor)
|
||||||
|
|
||||||
|
manytomany = ManyToManyModel()
|
||||||
|
manytomany.save()
|
||||||
|
manytomany.rel.add(*anchors)
|
||||||
|
|
||||||
|
self.data = [{
|
||||||
|
'url': 'http://testserver/manytomany/1/',
|
||||||
|
'rel': [
|
||||||
|
'http://testserver/anchor/1/',
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
self.list_view = FilteredManyToManyList.as_view()
|
||||||
|
self.detail_view = FilteredManyToManyDetail.as_view()
|
||||||
|
|
||||||
|
def test_get_list_view(self):
|
||||||
|
"""
|
||||||
|
GET requests to ListCreateAPIView should return list of objects.
|
||||||
|
"""
|
||||||
|
request = factory.get('/filteredmanytomany/')
|
||||||
|
response = self.list_view(request)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
self.assertEqual(response.data, self.data)
|
||||||
|
|
||||||
|
def test_get_detail_view(self):
|
||||||
|
"""
|
||||||
|
GET requests to ListCreateAPIView should return list of objects.
|
||||||
|
"""
|
||||||
|
request = factory.get('/filteredmanytomany/1/')
|
||||||
|
response = self.detail_view(request, pk=1)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
self.assertEqual(response.data, self.data[0])
|
||||||
|
|
||||||
|
|
||||||
class TestHyperlinkedIdentityFieldLookup(TestCase):
|
class TestHyperlinkedIdentityFieldLookup(TestCase):
|
||||||
urls = 'tests.test_hyperlinkedserializers'
|
urls = 'tests.test_hyperlinkedserializers'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user