diff options
Diffstat (limited to 'tests/model_fields')
| -rw-r--r-- | tests/model_fields/test_charfield.py | 27 | ||||
| -rw-r--r-- | tests/model_fields/test_integerfield.py | 14 |
2 files changed, 41 insertions, 0 deletions
diff --git a/tests/model_fields/test_charfield.py b/tests/model_fields/test_charfield.py index 1b50f01f3a..051be2eeec 100644 --- a/tests/model_fields/test_charfield.py +++ b/tests/model_fields/test_charfield.py @@ -28,9 +28,27 @@ class TestCharField(TestCase): p.refresh_from_db() self.assertEqual(p.title, 'Smile 😀') + def test_assignment_from_choice_enum(self): + class Event(models.TextChoices): + C = 'Carnival!' + F = 'Festival!' + + p1 = Post.objects.create(title=Event.C, body=Event.F) + p1.refresh_from_db() + self.assertEqual(p1.title, 'Carnival!') + self.assertEqual(p1.body, 'Festival!') + self.assertEqual(p1.title, Event.C) + self.assertEqual(p1.body, Event.F) + p2 = Post.objects.get(title='Carnival!') + self.assertEquals(p1, p2) + self.assertEquals(p2.title, Event.C) + class ValidationTests(SimpleTestCase): + class Choices(models.TextChoices): + C = 'c', 'C' + def test_charfield_raises_error_on_empty_string(self): f = models.CharField() with self.assertRaises(ValidationError): @@ -49,6 +67,15 @@ class ValidationTests(SimpleTestCase): with self.assertRaises(ValidationError): f.clean('not a', None) + def test_enum_choices_cleans_valid_string(self): + f = models.CharField(choices=self.Choices.choices, max_length=1) + self.assertEqual(f.clean('c', None), 'c') + + def test_enum_choices_invalid_input(self): + f = models.CharField(choices=self.Choices.choices, max_length=1) + with self.assertRaises(ValidationError): + f.clean('a', None) + def test_charfield_raises_error_on_empty_input(self): f = models.CharField(null=False) with self.assertRaises(ValidationError): diff --git a/tests/model_fields/test_integerfield.py b/tests/model_fields/test_integerfield.py index c0bb7627cf..606d71057a 100644 --- a/tests/model_fields/test_integerfield.py +++ b/tests/model_fields/test_integerfield.py @@ -184,6 +184,9 @@ class PositiveIntegerFieldTests(IntegerFieldTests): class ValidationTests(SimpleTestCase): + class Choices(models.IntegerChoices): + A = 1 + def test_integerfield_cleans_valid_string(self): f = models.IntegerField() self.assertEqual(f.clean('2', None), 2) @@ -217,3 +220,14 @@ class ValidationTests(SimpleTestCase): f = models.IntegerField(choices=((1, 1),)) with self.assertRaises(ValidationError): f.clean('0', None) + + def test_enum_choices_cleans_valid_string(self): + f = models.IntegerField(choices=self.Choices.choices) + self.assertEqual(f.clean('1', None), 1) + + def test_enum_choices_invalid_input(self): + f = models.IntegerField(choices=self.Choices.choices) + with self.assertRaises(ValidationError): + f.clean('A', None) + with self.assertRaises(ValidationError): + f.clean('3', None) |
