Commit 95670933 by Carlton Gibson

Test and quick fix for #1257

parent ac1ea5e6
...@@ -893,6 +893,7 @@ class ModelSerializer(Serializer): ...@@ -893,6 +893,7 @@ class ModelSerializer(Serializer):
field_name = field.source or field_name field_name = field.source or field_name
if field_name in exclusions \ if field_name in exclusions \
and not field.read_only \ and not field.read_only \
and field.required \
and not isinstance(field, Serializer): and not isinstance(field, Serializer):
exclusions.remove(field_name) exclusions.remove(field_name)
return exclusions return exclusions
......
...@@ -71,6 +71,15 @@ class ActionItemSerializer(serializers.ModelSerializer): ...@@ -71,6 +71,15 @@ class ActionItemSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = ActionItem model = ActionItem
class ActionItemSerializerOptionalFields(serializers.ModelSerializer):
"""
Intended to test that fields with `required=False` are excluded from validation.
"""
title = serializers.CharField(required=False)
class Meta:
model = ActionItem
fields = ('title',)
class ActionItemSerializerCustomRestore(serializers.ModelSerializer): class ActionItemSerializerCustomRestore(serializers.ModelSerializer):
...@@ -288,7 +297,13 @@ class BasicTests(TestCase): ...@@ -288,7 +297,13 @@ class BasicTests(TestCase):
serializer.save() serializer.save()
self.assertIsNotNone(serializer.data.get('id',None), 'Model is saved. `id` should be set.') self.assertIsNotNone(serializer.data.get('id',None), 'Model is saved. `id` should be set.')
def test_fields_marked_as_not_required_are_excluded_from_validation(self):
"""
Check that fields with `required=False` are included in list of exclusions.
"""
serializer = ActionItemSerializerOptionalFields(self.actionitem)
exclusions = serializer.get_validation_exclusions()
self.assertTrue('title' in exclusions, '`title` field was marked `required=False` and should be excluded')
class DictStyleSerializer(serializers.Serializer): class DictStyleSerializer(serializers.Serializer):
...@@ -1808,14 +1823,14 @@ class SerializerDefaultTrueBoolean(TestCase): ...@@ -1808,14 +1823,14 @@ class SerializerDefaultTrueBoolean(TestCase):
self.assertEqual(serializer.data['cat'], False) self.assertEqual(serializer.data['cat'], False)
self.assertEqual(serializer.data['dog'], False) self.assertEqual(serializer.data['dog'], False)
class BoolenFieldTypeTest(TestCase): class BoolenFieldTypeTest(TestCase):
''' '''
Ensure the various Boolean based model fields are rendered as the proper Ensure the various Boolean based model fields are rendered as the proper
field type field type
''' '''
def setUp(self): def setUp(self):
''' '''
Setup an ActionItemSerializer for BooleanTesting Setup an ActionItemSerializer for BooleanTesting
...@@ -1831,11 +1846,11 @@ class BoolenFieldTypeTest(TestCase): ...@@ -1831,11 +1846,11 @@ class BoolenFieldTypeTest(TestCase):
''' '''
bfield = self.serializer.get_fields()['done'] bfield = self.serializer.get_fields()['done']
self.assertEqual(type(bfield), fields.BooleanField) self.assertEqual(type(bfield), fields.BooleanField)
def test_nullbooleanfield_type(self): def test_nullbooleanfield_type(self):
''' '''
Test that BooleanField is infered from models.NullBooleanField Test that BooleanField is infered from models.NullBooleanField
https://groups.google.com/forum/#!topic/django-rest-framework/D9mXEftpuQ8 https://groups.google.com/forum/#!topic/django-rest-framework/D9mXEftpuQ8
''' '''
bfield = self.serializer.get_fields()['started'] bfield = self.serializer.get_fields()['started']
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment