From 877ed6edc277f5691d5b3048e227877f289d06fd Mon Sep 17 00:00:00 2001 From: Laurent De Marez Date: Mon, 11 Jan 2016 10:43:06 +0100 Subject: [PATCH] Add nested serializer with list tests TestNestedSerializerWithList checks if a list (a MulitpleChoiceField in this case) in a nested serializer is correctly parsed from json or multipart formatted data. --- tests/test_serializer_nested.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/test_serializer_nested.py b/tests/test_serializer_nested.py index aeb092ee0..133600399 100644 --- a/tests/test_serializer_nested.py +++ b/tests/test_serializer_nested.py @@ -167,3 +167,32 @@ class TestNestedSerializerWithMany: expected_errors = {'not_allow_empty': {'non_field_errors': [serializers.ListSerializer.default_error_messages['empty']]}} assert serializer.errors == expected_errors + + +class TestNestedSerializerWithList: + def setup(self): + class NestedSerializer(serializers.Serializer): + example = serializers.MultipleChoiceField(choices=[1, 2, 3]) + + class TestSerializer(serializers.Serializer): + nested = NestedSerializer() + + self.Serializer = TestSerializer + + def test_nested_serializer_with_list_json(self): + input_data = { + 'nested': { + 'example': [1, 2], + } + } + serializer = self.Serializer(data=input_data) + + assert serializer.is_valid() + assert serializer.validated_data['nested']['example'] == set([1, 2]) + + def test_nested_serializer_with_list_multipart(self): + input_data = QueryDict('nested.example=1&nested.example=2') + serializer = self.Serializer(data=input_data) + + assert serializer.is_valid() + assert serializer.validated_data['nested']['example'] == set([1, 2])