diff options
| author | Tom Christie | 2014-10-22 10:32:32 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-10-22 10:32:32 +0100 | 
| commit | c5d1be8eac6cdb5cce000ec7c55e1847bfcf2359 (patch) | |
| tree | e15672da0e6e72dc2944108e27329a04e1e231bd /tests/test_serializer.py | |
| parent | 05cbec9dd7f9f0b6a9b59b29ac6c9272b6ae50d8 (diff) | |
| download | django-rest-framework-c5d1be8eac6cdb5cce000ec7c55e1847bfcf2359.tar.bz2 | |
.validate() can raise field errors or non-field errors
Diffstat (limited to 'tests/test_serializer.py')
| -rw-r--r-- | tests/test_serializer.py | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 4df1b736..77d5c319 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -43,6 +43,32 @@ class TestSerializer:              serializer.data +class TestValidateMethod: +    def test_non_field_error_validate_method(self): +        class ExampleSerializer(serializers.Serializer): +            char = serializers.CharField() +            integer = serializers.IntegerField() + +            def validate(self, attrs): +                raise serializers.ValidationError('Non field error') + +        serializer = ExampleSerializer(data={'char': 'abc', 'integer': 123}) +        assert not serializer.is_valid() +        assert serializer.errors == {'non_field_errors': ['Non field error']} + +    def test_field_error_validate_method(self): +        class ExampleSerializer(serializers.Serializer): +            char = serializers.CharField() +            integer = serializers.IntegerField() + +            def validate(self, attrs): +                raise serializers.ValidationError({'char': 'Field error'}) + +        serializer = ExampleSerializer(data={'char': 'abc', 'integer': 123}) +        assert not serializer.is_valid() +        assert serializer.errors == {'char': ['Field error']} + +  class TestBaseSerializer:      def setup(self):          class ExampleSerializer(serializers.BaseSerializer): | 
