mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 20:10:10 +03:00
Added some tests for the default serializer field applied to Django's NullBooleanField to showcase that passing None for a NullBooleanField that does not have a default set causes the field's data to be set as when it should follow Django behaviour and set to therefore allowing un-setting of NullBooleanField values via DRF.
This commit is contained in:
parent
822eb39599
commit
d4b9db2946
|
@ -1824,7 +1824,7 @@ class SerializerDefaultTrueBoolean(TestCase):
|
||||||
self.assertEqual(serializer.data['dog'], False)
|
self.assertEqual(serializer.data['dog'], False)
|
||||||
|
|
||||||
|
|
||||||
class BoolenFieldTypeTest(TestCase):
|
class BooleanFieldTypeTest(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
|
||||||
|
@ -1855,3 +1855,73 @@ class BoolenFieldTypeTest(TestCase):
|
||||||
'''
|
'''
|
||||||
bfield = self.serializer.get_fields()['started']
|
bfield = self.serializer.get_fields()['started']
|
||||||
self.assertEqual(type(bfield), fields.BooleanField)
|
self.assertEqual(type(bfield), fields.BooleanField)
|
||||||
|
|
||||||
|
|
||||||
|
class NullBooleanFieldModel(models.Model):
|
||||||
|
"""
|
||||||
|
A model for use in the NullBooleanFieldSerializer test.
|
||||||
|
"""
|
||||||
|
cat = models.NullBooleanField(default=True)
|
||||||
|
dog = models.NullBooleanField(default=False)
|
||||||
|
rat = models.NullBooleanField()
|
||||||
|
|
||||||
|
|
||||||
|
class NullBooleanFieldSerializerTest(TestCase):
|
||||||
|
"""
|
||||||
|
Tests that the default serializer field for Django's NullBooleanField
|
||||||
|
works as expected.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(NullBooleanFieldSerializerTest, self).setUp()
|
||||||
|
|
||||||
|
class NullBooleanFieldSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = NullBooleanFieldModel
|
||||||
|
fields = ('cat', 'dog', 'rat')
|
||||||
|
|
||||||
|
self.serializer = NullBooleanFieldSerializer
|
||||||
|
|
||||||
|
def test_false(self):
|
||||||
|
data = {
|
||||||
|
'cat': False,
|
||||||
|
'dog': False,
|
||||||
|
'rat': False
|
||||||
|
}
|
||||||
|
serializer = self.serializer(data=data)
|
||||||
|
self.assertEqual(serializer.is_valid(), True)
|
||||||
|
self.assertEqual(serializer.data['cat'], False)
|
||||||
|
self.assertEqual(serializer.data['dog'], False)
|
||||||
|
self.assertEqual(serializer.data['rat'], False)
|
||||||
|
|
||||||
|
def test_true(self):
|
||||||
|
data = {
|
||||||
|
'cat': True,
|
||||||
|
'dog': True,
|
||||||
|
'rat': True
|
||||||
|
}
|
||||||
|
|
||||||
|
serializer = self.serializer(data=data)
|
||||||
|
self.assertEqual(serializer.is_valid(), True)
|
||||||
|
self.assertEqual(serializer.data['cat'], True)
|
||||||
|
self.assertEqual(serializer.data['dog'], True)
|
||||||
|
self.assertEqual(serializer.data['rat'], True)
|
||||||
|
|
||||||
|
def test_none(self):
|
||||||
|
data = {
|
||||||
|
'cat': None,
|
||||||
|
'dog': None,
|
||||||
|
'rat': None
|
||||||
|
}
|
||||||
|
serializer = self.serializer(data=data)
|
||||||
|
self.assertEqual(serializer.is_valid(), True)
|
||||||
|
self.assertEqual(serializer.data['cat'], None)
|
||||||
|
self.assertEqual(serializer.data['dog'], None)
|
||||||
|
self.assertEqual(serializer.data['rat'], None)
|
||||||
|
|
||||||
|
def test_partial(self):
|
||||||
|
serializer = self.serializer(data={'rat': None}, partial=True)
|
||||||
|
self.assertEqual(serializer.is_valid(), True)
|
||||||
|
self.assertEqual(serializer.data['cat'], True)
|
||||||
|
self.assertEqual(serializer.data['dog'], False)
|
||||||
|
self.assertEqual(serializer.data['rat'], None)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user