diff options
| author | Alasdair Nicol <alasdair@thenicols.net> | 2013-08-11 21:19:09 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-08-15 19:47:26 -0400 |
| commit | 22c6497f990fd12359b759a71abfcbf3f52b2d52 (patch) | |
| tree | c04062583cf2cffabc193e635542fa91d99e163e /tests/model_fields | |
| parent | 55339a76691724109770092976e660ac62358bc5 (diff) | |
Fixed #20895 -- Made check management command warn if a BooleanField does not have a default value
Thanks to Collin Anderson for the suggestion and Tim Graham for
reviewing the patch.
Diffstat (limited to 'tests/model_fields')
| -rw-r--r-- | tests/model_fields/models.py | 4 | ||||
| -rw-r--r-- | tests/model_fields/tests.py | 23 |
2 files changed, 20 insertions, 7 deletions
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py index 2d602d6412..8c304cc726 100644 --- a/tests/model_fields/models.py +++ b/tests/model_fields/models.py @@ -58,7 +58,7 @@ class NullBooleanModel(models.Model): nbfield = models.NullBooleanField() class BooleanModel(models.Model): - bfield = models.BooleanField() + bfield = models.BooleanField(default=None) string = models.CharField(max_length=10, default='abc') class FksToBooleans(models.Model): @@ -72,7 +72,7 @@ class RenamedField(models.Model): class VerboseNameField(models.Model): id = models.AutoField("verbose pk", primary_key=True) field1 = models.BigIntegerField("verbose field1") - field2 = models.BooleanField("verbose field2") + field2 = models.BooleanField("verbose field2", default=False) field3 = models.CharField("verbose field3", max_length=10) field4 = models.CommaSeparatedIntegerField("verbose field4", max_length=99) field5 = models.DateField("verbose field5") diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py index 378e6280cc..429337f31c 100644 --- a/tests/model_fields/tests.py +++ b/tests/model_fields/tests.py @@ -12,7 +12,7 @@ from django.db.models.fields import ( AutoField, BigIntegerField, BinaryField, BooleanField, CharField, CommaSeparatedIntegerField, DateField, DateTimeField, DecimalField, EmailField, FilePathField, FloatField, IntegerField, IPAddressField, - GenericIPAddressField, NullBooleanField, PositiveIntegerField, + GenericIPAddressField, NOT_PROVIDED, NullBooleanField, PositiveIntegerField, PositiveSmallIntegerField, SlugField, SmallIntegerField, TextField, TimeField, URLField) from django.db.models.fields.files import FileField, ImageField @@ -275,10 +275,23 @@ class BooleanFieldTests(unittest.TestCase): Check that a BooleanField defaults to None -- which isn't a valid value (#15124). """ - b = BooleanModel() - self.assertIsNone(b.bfield) - with self.assertRaises(IntegrityError): - b.save() + # Patch the boolean field's default value. We give it a default + # value when defining the model to satisfy the check tests + # #20895. + boolean_field = BooleanModel._meta.get_field('bfield') + self.assertTrue(boolean_field.has_default()) + old_default = boolean_field.default + try: + boolean_field.default = NOT_PROVIDED + # check patch was succcessful + self.assertFalse(boolean_field.has_default()) + b = BooleanModel() + self.assertIsNone(b.bfield) + with self.assertRaises(IntegrityError): + b.save() + finally: + boolean_field.default = old_default + nb = NullBooleanModel() self.assertIsNone(nb.nbfield) nb.save() # no error |
