From 706d173334d03aec166482d5d910d6bf8ece534a Mon Sep 17 00:00:00 2001 From: Preston Date: Tue, 7 Aug 2018 13:22:35 -0600 Subject: [PATCH] added (failing) test to ensure None is an acceptable value for a NullBooleanField with choices defined --- tests/test_model_serializer.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 7e801badb..93b47e4a3 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -342,6 +342,28 @@ class TestRegularFieldMappings(TestCase): ExampleSerializer() + def test_null_boolean_field_choices(self): + CHECKLIST_OPTIONS = [ + (None, 'none'), + (True, 'checked'), + (False, 'N/A'), + ] + + class Trivial(models.Model): + name = models.CharField(max_length=255) + theoretically_nullable_field = models.NullBooleanField(choices=CHECKLIST_OPTIONS) + + class TrivialSerializer(serializers.ModelSerializer): + class Meta: + model = Trivial + fields = '__all__' + + trivial_serialized = TrivialSerializer(data=dict(name='test', theoretically_nullable_field=None)) + + self.assertTrue(trivial_serialized.is_valid()) + + self.assertEqual(trivial_serialized.errors, {}) + class TestDurationFieldMapping(TestCase): def test_duration_field(self):