aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests/serializer.py
diff options
context:
space:
mode:
authorIan Dash2013-03-07 17:29:25 +0000
committerIan Dash2013-03-08 15:08:05 +0000
commit66605acaf02d46eb899f495137afb4f9ff127ff0 (patch)
tree24d99bece5278d81cd58fb038528907611f30241 /rest_framework/tests/serializer.py
parent4e80541824bab0712a816716c5c63ec5623370d8 (diff)
downloaddjango-rest-framework-66605acaf02d46eb899f495137afb4f9ff127ff0.tar.bz2
Errors during deserializing lists now return a list of tuples with
index of bad item in data plus usual errors dict
Diffstat (limited to 'rest_framework/tests/serializer.py')
-rw-r--r--rest_framework/tests/serializer.py45
1 files changed, 44 insertions, 1 deletions
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py
index 51065017..33910936 100644
--- a/rest_framework/tests/serializer.py
+++ b/rest_framework/tests/serializer.py
@@ -268,7 +268,16 @@ class ValidationTests(TestCase):
data = ['i am', 'a', 'list']
serializer = CommentSerializer(self.comment, data=data, many=True)
self.assertEqual(serializer.is_valid(), False)
- self.assertEqual(serializer.errors, {'non_field_errors': ['Invalid data']})
+ self.assertTrue(isinstance(serializer.errors, list))
+
+ self.assertEqual(
+ serializer.errors,
+ [
+ (0, {'non_field_errors': ['Invalid data']}),
+ (1, {'non_field_errors': ['Invalid data']}),
+ (2, {'non_field_errors': ['Invalid data']})
+ ]
+ )
data = 'and i am a string'
serializer = CommentSerializer(self.comment, data=data)
@@ -1072,3 +1081,37 @@ class NestedSerializerContextTests(TestCase):
# This will raise RuntimeError if context doesn't get passed correctly to the nested Serializers
AlbumCollectionSerializer(album_collection, context={'context_item': 'album context'}).data
+
+
+class DeserializeListTestCase(TestCase):
+
+ def setUp(self):
+ self.data = {
+ 'email': 'nobody@nowhere.com',
+ 'content': 'This is some test content',
+ 'created': datetime.datetime(2013, 3, 7),
+ }
+
+ def test_no_errors(self):
+ data = [self.data.copy() for x in range(0, 3)]
+ serializer = CommentSerializer(data=data)
+ self.assertTrue(serializer.is_valid())
+ self.assertTrue(isinstance(serializer.object, list))
+ self.assertTrue(
+ all((isinstance(item, Comment) for item in serializer.object))
+ )
+
+ def test_errors_return_as_list(self):
+ invalid_item = self.data.copy()
+ invalid_item['email'] = ''
+ data = [self.data.copy(), invalid_item, self.data.copy()]
+
+ serializer = CommentSerializer(data=data)
+ self.assertFalse(serializer.is_valid())
+ self.assertTrue(isinstance(serializer.errors, list))
+ self.assertEqual(1, len(serializer.errors))
+ expected = (1, {'email': ['This field is required.']})
+ self.assertEqual(
+ serializer.errors[0],
+ expected
+ )