aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBrickXu2014-12-05 14:50:53 +0800
committerxulei2014-12-05 14:51:39 +0800
commitd68c61450440a522b08b64fdd21028cc739e6ead (patch)
treedda22038a03f21e2fd9d2828533db6d8914bd621 /tests
parent4042180392fb7809d1c8d2f6ca0bc6e18c114e6c (diff)
downloaddjango-rest-framework-d68c61450440a522b08b64fdd21028cc739e6ead.tar.bz2
Add validation for fields & exclude type.
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'.")