mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-06-17 12:03:19 +03:00
Test and quick fix for #1257
This commit is contained in:
parent
ac1ea5e651
commit
95670933d7
|
@ -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):
|
||||||
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):
|
||||||
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):
|
||||||
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):
|
||||||
'''
|
'''
|
||||||
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']
|
||||||
|
|
Loading…
Reference in New Issue
Block a user