diff options
| author | Tom Christie | 2014-09-26 12:48:20 +0100 |
|---|---|---|
| committer | Tom Christie | 2014-09-26 12:48:20 +0100 |
| commit | 8b8623c5f84d443d26804cac52a793a3037a1dd0 (patch) | |
| tree | 9e39f116b9d224578440261575ec647f1b07a004 /tests/test_serializer.py | |
| parent | fde934d33c8692bab5e0e7b6009d358101a25dd7 (diff) | |
| download | django-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.py | 58 |
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. |
