aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTom Christie2014-12-05 14:00:59 +0000
committerTom Christie2014-12-05 14:00:59 +0000
commitc611a2c1fe7370bbe3151cb04b546e3e400acf1e (patch)
tree83f64814636e23fca5e9006ad3597bac5a45a2d0 /tests
parentfca91750293d2a1ef6f4f7e8bf5dad009df5a935 (diff)
parentd68c61450440a522b08b64fdd21028cc739e6ead (diff)
downloaddjango-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')
-rw-r--r--tests/test_serializer_metaclass.py62
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'.")