diff options
| author | BrickXu | 2014-12-05 14:50:53 +0800 | 
|---|---|---|
| committer | xulei | 2014-12-05 14:51:39 +0800 | 
| commit | d68c61450440a522b08b64fdd21028cc739e6ead (patch) | |
| tree | dda22038a03f21e2fd9d2828533db6d8914bd621 /tests | |
| parent | 4042180392fb7809d1c8d2f6ca0bc6e18c114e6c (diff) | |
| download | django-rest-framework-d68c61450440a522b08b64fdd21028cc739e6ead.tar.bz2 | |
Add validation for fields & exclude type.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_serializer_metaclass.py | 62 | 
1 files changed, 62 insertions, 0 deletions
| diff --git a/tests/test_serializer_metaclass.py b/tests/test_serializer_metaclass.py new file mode 100644 index 00000000..bd2fbed7 --- /dev/null +++ b/tests/test_serializer_metaclass.py @@ -0,0 +1,62 @@ +from django.test import TestCase +from rest_framework import serializers +from .models import BasicModel + + +class TestSerializerMetaClass(TestCase): +    def setUp(self): +        class FieldsSerializer(serializers.ModelSerializer): +            text = serializers.CharField() + +            class Meta: +                model = BasicModel +                fields = ('text') + +        class ExcludeSerializer(serializers.ModelSerializer): +            text = serializers.CharField() + +            class Meta: +                model = BasicModel +                exclude = ('text') + +        class FieldsAndExcludeSerializer(serializers.ModelSerializer): +            text = serializers.CharField() + +            class Meta: +                model = BasicModel +                fields = ('text',) +                exclude = ('text',) + +        self.fields_serializer = FieldsSerializer +        self.exclude_serializer = ExcludeSerializer +        self.faeSerializer = FieldsAndExcludeSerializer + +    def test_meta_class_fields(self): +        object = BasicModel(text="Hello World.") +        serializer = self.fields_serializer(instance=object) + +        with self.assertRaises(TypeError) as result: +            serializer.data + +        exception = result.exception +        self.assertEqual(str(exception), "`fields` must be a list or tuple") + +    def test_meta_class_exclude(self): +        object = BasicModel(text="Hello World.") +        serializer = self.exclude_serializer(instance=object) + +        with self.assertRaises(TypeError) as result: +            serializer.data + +        exception = result.exception +        self.assertEqual(str(exception), "`exclude` must be a list or tuple") + +    def test_meta_class_fields_and_exclude(self): +        object = BasicModel(text="Hello World.") +        serializer = self.faeSerializer(instance=object) + +        with self.assertRaises(AssertionError) as result: +            serializer.data + +        exception = result.exception +        self.assertEqual(str(exception), "Cannot set both 'fields' and 'exclude'.") | 
