summaryrefslogtreecommitdiff
path: root/tests/model_fields
diff options
context:
space:
mode:
Diffstat (limited to 'tests/model_fields')
-rw-r--r--tests/model_fields/test_charfield.py27
-rw-r--r--tests/model_fields/test_integerfield.py14
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)