aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_serializer.py
diff options
context:
space:
mode:
authorTom Christie2014-10-22 10:32:32 +0100
committerTom Christie2014-10-22 10:32:32 +0100
commitc5d1be8eac6cdb5cce000ec7c55e1847bfcf2359 (patch)
treee15672da0e6e72dc2944108e27329a04e1e231bd /tests/test_serializer.py
parent05cbec9dd7f9f0b6a9b59b29ac6c9272b6ae50d8 (diff)
downloaddjango-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.py26
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):