aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_serializer.py
diff options
context:
space:
mode:
authorTom Christie2014-09-26 12:48:20 +0100
committerTom Christie2014-09-26 12:48:20 +0100
commit8b8623c5f84d443d26804cac52a793a3037a1dd0 (patch)
tree9e39f116b9d224578440261575ec647f1b07a004 /tests/test_serializer.py
parentfde934d33c8692bab5e0e7b6009d358101a25dd7 (diff)
downloaddjango-rest-framework-8b8623c5f84d443d26804cac52a793a3037a1dd0.tar.bz2
Allow many, partial and context in BaseSerializer
Diffstat (limited to 'tests/test_serializer.py')
-rw-r--r--tests/test_serializer.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/test_serializer.py b/tests/test_serializer.py
index 256a12e6..4df1b736 100644
--- a/tests/test_serializer.py
+++ b/tests/test_serializer.py
@@ -43,6 +43,64 @@ class TestSerializer:
serializer.data
+class TestBaseSerializer:
+ def setup(self):
+ class ExampleSerializer(serializers.BaseSerializer):
+ def to_representation(self, obj):
+ return {
+ 'id': obj['id'],
+ 'email': obj['name'] + '@' + obj['domain']
+ }
+
+ def to_internal_value(self, data):
+ name, domain = str(data['email']).split('@')
+ return {
+ 'id': int(data['id']),
+ 'name': name,
+ 'domain': domain,
+ }
+
+ self.Serializer = ExampleSerializer
+
+ def test_serialize_instance(self):
+ instance = {'id': 1, 'name': 'tom', 'domain': 'example.com'}
+ serializer = self.Serializer(instance)
+ assert serializer.data == {'id': 1, 'email': 'tom@example.com'}
+
+ def test_serialize_list(self):
+ instances = [
+ {'id': 1, 'name': 'tom', 'domain': 'example.com'},
+ {'id': 2, 'name': 'ann', 'domain': 'example.com'},
+ ]
+ serializer = self.Serializer(instances, many=True)
+ assert serializer.data == [
+ {'id': 1, 'email': 'tom@example.com'},
+ {'id': 2, 'email': 'ann@example.com'}
+ ]
+
+ def test_validate_data(self):
+ data = {'id': 1, 'email': 'tom@example.com'}
+ serializer = self.Serializer(data=data)
+ assert serializer.is_valid()
+ assert serializer.validated_data == {
+ 'id': 1,
+ 'name': 'tom',
+ 'domain': 'example.com'
+ }
+
+ def test_validate_list(self):
+ data = [
+ {'id': 1, 'email': 'tom@example.com'},
+ {'id': 2, 'email': 'ann@example.com'},
+ ]
+ serializer = self.Serializer(data=data, many=True)
+ assert serializer.is_valid()
+ assert serializer.validated_data == [
+ {'id': 1, 'name': 'tom', 'domain': 'example.com'},
+ {'id': 2, 'name': 'ann', 'domain': 'example.com'}
+ ]
+
+
class TestStarredSource:
"""
Tests for `source='*'` argument, which is used for nested representations.