diff options
| author | Simon Charette <charette.s@gmail.com> | 2015-09-17 11:15:43 -0400 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2015-09-18 14:31:36 -0400 |
| commit | 71ebcb85b931f43865df5b322b2cf06d3da23f69 (patch) | |
| tree | f0030999def3b0b4c6996ebd6175aafa300f371c /tests/invalid_models_tests | |
| parent | 75ed5900321d170debef4ac452b8b3cf8a1c2384 (diff) | |
Fixed #25417 -- Added a field check for invalid default values.
Diffstat (limited to 'tests/invalid_models_tests')
| -rw-r--r-- | tests/invalid_models_tests/test_ordinary_fields.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py index 033970aae4..9bde621ed4 100644 --- a/tests/invalid_models_tests/test_ordinary_fields.py +++ b/tests/invalid_models_tests/test_ordinary_fields.py @@ -1,6 +1,7 @@ # -*- encoding: utf-8 -*- from __future__ import unicode_literals +import decimal import unittest from django.core.checks import Error, Warning as DjangoWarning @@ -64,6 +65,22 @@ class BooleanFieldTests(IsolatedModelsTestCase): ] self.assertEqual(errors, expected) + def test_invalid_default(self): + class Model(models.Model): + field = models.BooleanField(default='invalid') + + field = Model._meta.get_field('field') + errors = field.check() + expected = [ + Error( + "Invalid 'default' value: 'invalid' value must be either True or False.", + hint=None, + obj=field, + id='fields.E008', + ), + ] + self.assertEqual(errors, expected) + class CharFieldTests(IsolatedModelsTestCase, TestCase): @@ -215,6 +232,22 @@ class CharFieldTests(IsolatedModelsTestCase, TestCase): ] self.assertEqual(errors, expected) + def test_invalid_default(self): + class Model(models.Model): + field = models.CharField(max_length=10, default=None) + + field = Model._meta.get_field('field') + errors = field.check() + expected = [ + Error( + "Invalid 'default' value: This field cannot be null.", + hint=None, + obj=field, + id='fields.E008', + ), + ] + self.assertEqual(errors, expected) + class DateFieldTests(IsolatedModelsTestCase, TestCase): @@ -281,6 +314,25 @@ class DateFieldTests(IsolatedModelsTestCase, TestCase): def test_fix_default_value_tz(self): self.test_fix_default_value() + def test_invalid_default(self): + class Model(models.Model): + field = models.DateField(default='invalid') + + field = Model._meta.get_field('field') + errors = field.check() + message = ( + "Invalid 'default' value: 'invalid' value has an invalid date format. It must be in YYYY-MM-DD format." + ) + expected = [ + Error( + message, + hint=None, + obj=field, + id='fields.E008', + ), + ] + self.assertEqual(errors, expected) + class DateTimeFieldTests(IsolatedModelsTestCase, TestCase): @@ -419,6 +471,22 @@ class DecimalFieldTests(IsolatedModelsTestCase): expected = [] self.assertEqual(errors, expected) + def test_invalid_default(self): + class Model(models.Model): + field = models.DecimalField(max_digits=3, decimal_places=2, default=decimal.Decimal('20.00')) + + field = Model._meta.get_field('field') + errors = field.check() + expected = [ + Error( + "Invalid 'default' value: Ensure that there are no more than 3 digits in total.", + hint=None, + obj=field, + id='fields.E008', + ), + ] + self.assertEqual(errors, expected) + class FileFieldTests(IsolatedModelsTestCase): |
