mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-07 22:04:48 +03:00
A test for a POST that returns multiple objects, which triggers issue #2918
This commit is contained in:
parent
a568d16ae4
commit
342a940708
|
@ -64,6 +64,16 @@ class FKInstanceView(generics.RetrieveUpdateDestroyAPIView):
|
|||
serializer_class = ForeignKeySerializer
|
||||
|
||||
|
||||
class ManyPostView(generics.GenericAPIView):
|
||||
queryset = BasicModel.objects.all()
|
||||
serializer_class = BasicSerializer
|
||||
renderer_classes = (renderers.BrowsableAPIRenderer, renderers.JSONRenderer)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
serializer = self.get_serializer(self.get_queryset(), many=True)
|
||||
return Response(serializer.data, status.HTTP_200_OK)
|
||||
|
||||
|
||||
class SlugBasedInstanceView(InstanceView):
|
||||
"""
|
||||
A model with a slug-field.
|
||||
|
@ -542,3 +552,30 @@ class TestGuardedQueryset(TestCase):
|
|||
request = factory.get('/')
|
||||
with pytest.raises(RuntimeError):
|
||||
view(request).render()
|
||||
|
||||
|
||||
class TestManyPostView(TestCase):
|
||||
def setUp(self):
|
||||
"""
|
||||
Create 3 BasicModel instances.
|
||||
"""
|
||||
items = ['foo', 'bar', 'baz']
|
||||
for item in items:
|
||||
BasicModel(text=item).save()
|
||||
self.objects = BasicModel.objects
|
||||
self.data = [
|
||||
{'id': obj.id, 'text': obj.text}
|
||||
for obj in self.objects.all()
|
||||
]
|
||||
self.view = ManyPostView.as_view()
|
||||
|
||||
def test_post_many_post_view(self):
|
||||
"""
|
||||
POST request to ManyPostView should return a list of objects.
|
||||
"""
|
||||
data = {}
|
||||
request = factory.post('/', data, format='json')
|
||||
with self.assertNumQueries(1):
|
||||
response = self.view(request).render()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(response.data), 3)
|
||||
|
|
Loading…
Reference in New Issue
Block a user