diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/forms_tests/field_tests/test_choicefield.py | 3 | ||||
| -rw-r--r-- | tests/migrations/test_writer.py | 10 | ||||
| -rw-r--r-- | tests/model_fields/models.py | 7 | ||||
| -rw-r--r-- | tests/model_fields/test_charfield.py | 4 | ||||
| -rw-r--r-- | tests/model_fields/test_integerfield.py | 4 | ||||
| -rw-r--r-- | tests/model_fields/tests.py | 5 |
6 files changed, 21 insertions, 12 deletions
diff --git a/tests/forms_tests/field_tests/test_choicefield.py b/tests/forms_tests/field_tests/test_choicefield.py index bc580bbf02..e7893abe57 100644 --- a/tests/forms_tests/field_tests/test_choicefield.py +++ b/tests/forms_tests/field_tests/test_choicefield.py @@ -95,7 +95,8 @@ class ChoiceFieldTest(FormFieldAssertionsMixin, SimpleTestCase): JOHN = "J", "John" PAUL = "P", "Paul" - f = ChoiceField(choices=FirstNames.choices) + f = ChoiceField(choices=FirstNames) + self.assertEqual(f.choices, FirstNames.choices) self.assertEqual(f.clean("J"), "J") msg = "'Select a valid choice. 3 is not one of the available choices.'" with self.assertRaisesMessage(ValidationError, msg): diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py index c6638b3083..33b52bd538 100644 --- a/tests/migrations/test_writer.py +++ b/tests/migrations/test_writer.py @@ -433,24 +433,20 @@ class WriterTests(SimpleTestCase): DateChoices.DATE_1, ("datetime.date(1969, 7, 20)", {"import datetime"}), ) - field = models.CharField(default=TextChoices.B, choices=TextChoices.choices) + field = models.CharField(default=TextChoices.B, choices=TextChoices) string = MigrationWriter.serialize(field)[0] self.assertEqual( string, "models.CharField(choices=[('A', 'A value'), ('B', 'B value')], " "default='B')", ) - field = models.IntegerField( - default=IntegerChoices.B, choices=IntegerChoices.choices - ) + field = models.IntegerField(default=IntegerChoices.B, choices=IntegerChoices) string = MigrationWriter.serialize(field)[0] self.assertEqual( string, "models.IntegerField(choices=[(1, 'One'), (2, 'Two')], default=2)", ) - field = models.DateField( - default=DateChoices.DATE_2, choices=DateChoices.choices - ) + field = models.DateField(default=DateChoices.DATE_2, choices=DateChoices) string = MigrationWriter.serialize(field)[0] self.assertEqual( string, diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py index c35dfc2ebe..424a78746d 100644 --- a/tests/model_fields/models.py +++ b/tests/model_fields/models.py @@ -69,11 +69,18 @@ class WhizIterEmpty(models.Model): class Choiceful(models.Model): + class Suit(models.IntegerChoices): + DIAMOND = 1, "Diamond" + SPADE = 2, "Spade" + HEART = 3, "Heart" + CLUB = 4, "Club" + no_choices = models.IntegerField(null=True) empty_choices = models.IntegerField(choices=(), null=True) with_choices = models.IntegerField(choices=[(1, "A")], null=True) empty_choices_bool = models.BooleanField(choices=()) empty_choices_text = models.TextField(choices=()) + choices_from_enum = models.IntegerField(choices=Suit) class BigD(models.Model): diff --git a/tests/model_fields/test_charfield.py b/tests/model_fields/test_charfield.py index e9c1444f16..782158d210 100644 --- a/tests/model_fields/test_charfield.py +++ b/tests/model_fields/test_charfield.py @@ -75,11 +75,11 @@ class ValidationTests(SimpleTestCase): f.clean("not a", None) def test_enum_choices_cleans_valid_string(self): - f = models.CharField(choices=self.Choices.choices, max_length=1) + f = models.CharField(choices=self.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) + f = models.CharField(choices=self.Choices, max_length=1) msg = "Value 'a' is not a valid choice." with self.assertRaisesMessage(ValidationError, msg): f.clean("a", None) diff --git a/tests/model_fields/test_integerfield.py b/tests/model_fields/test_integerfield.py index 7698160678..6761589b7e 100644 --- a/tests/model_fields/test_integerfield.py +++ b/tests/model_fields/test_integerfield.py @@ -301,11 +301,11 @@ class ValidationTests(SimpleTestCase): f.clean("0", None) def test_enum_choices_cleans_valid_string(self): - f = models.IntegerField(choices=self.Choices.choices) + f = models.IntegerField(choices=self.Choices) self.assertEqual(f.clean("1", None), 1) def test_enum_choices_invalid_input(self): - f = models.IntegerField(choices=self.Choices.choices) + f = models.IntegerField(choices=self.Choices) with self.assertRaises(ValidationError): f.clean("A", None) with self.assertRaises(ValidationError): diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py index 6d4a91afa2..fe8526a480 100644 --- a/tests/model_fields/tests.py +++ b/tests/model_fields/tests.py @@ -156,6 +156,7 @@ class ChoicesTests(SimpleTestCase): cls.empty_choices_bool = Choiceful._meta.get_field("empty_choices_bool") cls.empty_choices_text = Choiceful._meta.get_field("empty_choices_text") cls.with_choices = Choiceful._meta.get_field("with_choices") + cls.choices_from_enum = Choiceful._meta.get_field("choices_from_enum") def test_choices(self): self.assertIsNone(self.no_choices.choices) @@ -192,6 +193,10 @@ class ChoicesTests(SimpleTestCase): with self.subTest(field=field): self.assertIsInstance(field.formfield(), forms.ChoiceField) + def test_choices_from_enum(self): + # Choices class was transparently resolved when given as argument. + self.assertEqual(self.choices_from_enum.choices, Choiceful.Suit.choices) + class GetFieldDisplayTests(SimpleTestCase): def test_choices_and_field_display(self): |
