From 91e215a7e5b61a464610784fe935ae3a3a089af5 Mon Sep 17 00:00:00 2001 From: Alex Reid Date: Wed, 27 Apr 2016 13:19:54 +0100 Subject: [PATCH] Add failing test for issue #4073 --- tests/test_serializer_nested.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/test_serializer_nested.py b/tests/test_serializer_nested.py index aeb092ee0..65687b4cf 100644 --- a/tests/test_serializer_nested.py +++ b/tests/test_serializer_nested.py @@ -167,3 +167,30 @@ class TestNestedSerializerWithMany: expected_errors = {'not_allow_empty': {'non_field_errors': [serializers.ListSerializer.default_error_messages['empty']]}} assert serializer.errors == expected_errors + + +class TestNestedSerializerWithParentValidation: + def setup(self): + class NestedSerializer(serializers.Serializer): + one = serializers.IntegerField() + + class TestSerializer(serializers.Serializer): + nested = NestedSerializer() + + def validate_nested(self, value): + raise serializers.ValidationError( + u'Error from parent serializer.') + + self.Serializer = TestSerializer + + def test_using_serializer_as_form_with_parent_validation(self): + input_data = {'nested': {'one': 1}} + + serializer = self.Serializer(data=input_data) + + assert not serializer.is_valid() + assert 'nested' in serializer.errors + + nested_bound_field = serializer['nested'] + # This should not raise an exception: + one_bound_field = nested_bound_field['one']