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. | 
