aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework/tests')
-rw-r--r--rest_framework/tests/test_validation.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/rest_framework/tests/test_validation.py b/rest_framework/tests/test_validation.py
index 5202ebe4..a6ec0e99 100644
--- a/rest_framework/tests/test_validation.py
+++ b/rest_framework/tests/test_validation.py
@@ -65,14 +65,23 @@ class TestPreSaveValidationExclusions(TestCase):
self.assertEqual(serializer.is_valid(), False)
-class FieldValidationSerializer(serializers.Serializer):
+class ValidationSerializer(serializers.Serializer):
foo = serializers.CharField()
def validate_foo(self, attrs, source):
- raise StandardError("validate_foo was called")
+ raise serializers.ValidationError("foo invalid")
+ def validate(self, attrs):
+ raise serializers.ValidationError("serializer invalid")
-class TestFieldValidationWithInvalidData(TestCase):
- def test_validate_foo_was_not_called(self):
- serializer = FieldValidationSerializer(data='invalid data')
+
+class TestAvoidValidation(TestCase):
+ """
+ If serializer was initialized with invalid data (None or non dict-like), it
+ should avoid validation layer (validate_<field> and validate methods)
+ """
+ def test_serializer_errors_has_only_invalid_data_error(self):
+ serializer = ValidationSerializer(data='invalid data')
self.assertFalse(serializer.is_valid())
+ self.assertDictEqual(serializer.errors,
+ {'non_field_errors': ['Invalid data']})