mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 16:40:03 +03:00
Fixed autoschema for listserializer
This commit is contained in:
parent
d44afafbc7
commit
eede3ce936
|
@ -360,10 +360,11 @@ class AutoSchema(ViewInspector):
|
||||||
|
|
||||||
# Nested Serializers, `many` or not.
|
# Nested Serializers, `many` or not.
|
||||||
if isinstance(field, serializers.ListSerializer):
|
if isinstance(field, serializers.ListSerializer):
|
||||||
|
ref, components = self.map_serializer(field.child)
|
||||||
return {
|
return {
|
||||||
'type': 'array',
|
'type': 'array',
|
||||||
'items': self.map_serializer(field.child)
|
'items': ref
|
||||||
}, {}
|
}, components
|
||||||
if isinstance(field, serializers.Serializer):
|
if isinstance(field, serializers.Serializer):
|
||||||
data, components = self.map_serializer(field)
|
data, components = self.map_serializer(field)
|
||||||
return data, components
|
return data, components
|
||||||
|
|
|
@ -353,6 +353,35 @@ class TestOperationIntrospection(TestCase):
|
||||||
assert list(nested['properties'].keys()) == ['number']
|
assert list(nested['properties'].keys()) == ['number']
|
||||||
assert nested['required'] == ['number']
|
assert nested['required'] == ['number']
|
||||||
|
|
||||||
|
def test_response_body_list_serializer(self):
|
||||||
|
path = '/'
|
||||||
|
method = 'POST'
|
||||||
|
|
||||||
|
class NestedSerializer(serializers.Serializer):
|
||||||
|
number = serializers.IntegerField()
|
||||||
|
text = serializers.CharField()
|
||||||
|
|
||||||
|
class ItemSerializer(serializers.ListSerializer):
|
||||||
|
child = NestedSerializer()
|
||||||
|
|
||||||
|
class MainSerializer(serializers.Serializer):
|
||||||
|
main = ItemSerializer()
|
||||||
|
|
||||||
|
class View(generics.GenericAPIView):
|
||||||
|
serializer_class = MainSerializer
|
||||||
|
|
||||||
|
view = create_view(
|
||||||
|
View,
|
||||||
|
method,
|
||||||
|
create_request(path),
|
||||||
|
)
|
||||||
|
inspector = AutoSchema()
|
||||||
|
inspector.view = view
|
||||||
|
responses = inspector.get_responses(path, method)
|
||||||
|
assert responses['201']['content']['application/json']['schema']['$ref'] == '#/components/schemas/Main'
|
||||||
|
components = inspector.get_components(path, method)
|
||||||
|
assert sorted(list(components.keys())) == ['Main', 'Nested']
|
||||||
|
|
||||||
def test_list_response_body_generation(self):
|
def test_list_response_body_generation(self):
|
||||||
"""Test that an array schema is returned for list views."""
|
"""Test that an array schema is returned for list views."""
|
||||||
path = '/'
|
path = '/'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user