diff options
| author | Tom Christie | 2014-12-05 14:00:59 +0000 |
|---|---|---|
| committer | Tom Christie | 2014-12-05 14:00:59 +0000 |
| commit | c611a2c1fe7370bbe3151cb04b546e3e400acf1e (patch) | |
| tree | 83f64814636e23fca5e9006ad3597bac5a45a2d0 /tests/test_serializer_metaclass.py | |
| parent | fca91750293d2a1ef6f4f7e8bf5dad009df5a935 (diff) | |
| parent | d68c61450440a522b08b64fdd21028cc739e6ead (diff) | |
| download | django-rest-framework-c611a2c1fe7370bbe3151cb04b546e3e400acf1e.tar.bz2 | |
Merge pull request #2213 from BrickXu/master
Raise error if `fields` on serializer is not a list of strings.
Diffstat (limited to 'tests/test_serializer_metaclass.py')
| -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'.") |
