Skip to content

Commit d61167a

Browse files
author
Daniel Alvarez
committed
Adds a few tests for serializers.ListField OpenAPI schema
1 parent 960ed86 commit d61167a

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

tests/schemas/test_openapi.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,3 +307,14 @@ def test_serializer_validators(self):
307307

308308
assert response_schema['ip']['type'] == 'string'
309309
assert 'format' not in response_schema['ip']
310+
311+
assert response_schema['float_list']['type'] == 'array'
312+
assert response_schema['float_list']['items']['type'] == 'number'
313+
314+
assert response_schema['string_list']['type'] == 'array'
315+
assert response_schema['string_list']['items']['type'] == 'string'
316+
317+
assert response_schema['boolean_list']['type'] == 'array'
318+
assert response_schema['boolean_list']['items']['type'] == 'boolean'
319+
assert response_schema['boolean_list']['default'] == [True, False]
320+

tests/schemas/views.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,19 @@ class ExampleValidatedSerializer(serializers.Serializer):
9494
ip4 = serializers.IPAddressField(protocol='ipv4')
9595
ip6 = serializers.IPAddressField(protocol='ipv6')
9696
ip = serializers.IPAddressField()
97+
float_list = serializers.ListField(child=serializers.FloatField())
98+
string_list = serializers.ListField(child=serializers.CharField())
99+
boolean_list = serializers.ListField(child=serializers.BooleanField(), default=[True, False])
97100

98101

99102
class ExampleValidatedAPIView(generics.GenericAPIView):
100103
serializer_class = ExampleValidatedSerializer
101104

102105
def get(self, *args, **kwargs):
103-
serializer = self.get_serializer(integer=33, string='hello', regex='foo', decimal1=3.55,
104-
decimal2=5.33, email='[email protected]',
105-
url='http://localhost', uuid=uuid.uuid4(), ip4='127.0.0.1', ip6='::1',
106-
ip='192.168.1.1')
106+
serializer = self.get_serializer(
107+
integer=33, string='hello', regex='foo', decimal1=3.55, decimal2=5.33,
108+
email='[email protected]', url='http://localhost', uuid=uuid.uuid4(), ip4='127.0.0.1',
109+
ip6='::1', ip='192.168.1.1', float_list=[1.0, 2.0], string_list=['a', 'b', 'c'],
110+
boolean_list=[True]
111+
)
107112
return Response(serializer.data)

0 commit comments

Comments
 (0)