diff options
| author | Jacob Rief <jacob.rief@gmail.com> | 2023-04-08 22:10:17 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-06-16 08:38:28 +0200 |
| commit | 1fe0b167af3611cca79e8a8092ee929312193c6f (patch) | |
| tree | bfdc7ee5dd09b1f194b7308932b6de46c2881374 /tests/forms_tests | |
| parent | 549d6ffeb6d626b023acc40c3bb2093b4b25b3d6 (diff) | |
Fixed #34473 -- Fixed step validation for form fields with non-zero minimum value.
Diffstat (limited to 'tests/forms_tests')
| -rw-r--r-- | tests/forms_tests/field_tests/test_decimalfield.py | 19 | ||||
| -rw-r--r-- | tests/forms_tests/field_tests/test_floatfield.py | 12 | ||||
| -rw-r--r-- | tests/forms_tests/field_tests/test_integerfield.py | 16 |
3 files changed, 47 insertions, 0 deletions
diff --git a/tests/forms_tests/field_tests/test_decimalfield.py b/tests/forms_tests/field_tests/test_decimalfield.py index 4e24d553f3..9d26bc88b0 100644 --- a/tests/forms_tests/field_tests/test_decimalfield.py +++ b/tests/forms_tests/field_tests/test_decimalfield.py @@ -152,6 +152,25 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase): with self.assertRaisesMessage(ValidationError, msg): f.clean("1.1") + def test_decimalfield_step_size_min_value(self): + f = DecimalField( + step_size=decimal.Decimal("0.3"), + min_value=decimal.Decimal("-0.4"), + ) + self.assertWidgetRendersTo( + f, + '<input name="f" min="-0.4" step="0.3" type="number" id="id_f" required>', + ) + msg = ( + "Ensure this value is a multiple of step size 0.3, starting from -0.4, " + "e.g. -0.4, -0.1, 0.2, and so on." + ) + with self.assertRaisesMessage(ValidationError, msg): + f.clean("1") + self.assertEqual(f.clean("0.2"), decimal.Decimal("0.2")) + self.assertEqual(f.clean(2), decimal.Decimal(2)) + self.assertEqual(f.step_size, decimal.Decimal("0.3")) + def test_decimalfield_scientific(self): f = DecimalField(max_digits=4, decimal_places=2) with self.assertRaisesMessage(ValidationError, "Ensure that there are no more"): diff --git a/tests/forms_tests/field_tests/test_floatfield.py b/tests/forms_tests/field_tests/test_floatfield.py index 276520f04d..77b404102c 100644 --- a/tests/forms_tests/field_tests/test_floatfield.py +++ b/tests/forms_tests/field_tests/test_floatfield.py @@ -84,6 +84,18 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase): self.assertEqual(-1.26, f.clean("-1.26")) self.assertEqual(f.step_size, 0.02) + def test_floatfield_step_size_min_value(self): + f = FloatField(step_size=0.02, min_value=0.01) + msg = ( + "Ensure this value is a multiple of step size 0.02, starting from 0.01, " + "e.g. 0.01, 0.03, 0.05, and so on." + ) + with self.assertRaisesMessage(ValidationError, msg): + f.clean("0.02") + self.assertEqual(f.clean("2.33"), 2.33) + self.assertEqual(f.clean("0.11"), 0.11) + self.assertEqual(f.step_size, 0.02) + def test_floatfield_widget_attrs(self): f = FloatField(widget=NumberInput(attrs={"step": 0.01, "max": 1.0, "min": 0.0})) self.assertWidgetRendersTo( diff --git a/tests/forms_tests/field_tests/test_integerfield.py b/tests/forms_tests/field_tests/test_integerfield.py index 1361b5cc9e..a76c2fd508 100644 --- a/tests/forms_tests/field_tests/test_integerfield.py +++ b/tests/forms_tests/field_tests/test_integerfield.py @@ -126,6 +126,22 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): self.assertEqual(12, f.clean("12")) self.assertEqual(f.step_size, 3) + def test_integerfield_step_size_min_value(self): + f = IntegerField(step_size=3, min_value=-1) + self.assertWidgetRendersTo( + f, + '<input name="f" min="-1" step="3" type="number" id="id_f" required>', + ) + msg = ( + "Ensure this value is a multiple of step size 3, starting from -1, e.g. " + "-1, 2, 5, and so on." + ) + with self.assertRaisesMessage(ValidationError, msg): + f.clean("9") + self.assertEqual(f.clean("2"), 2) + self.assertEqual(f.clean("-1"), -1) + self.assertEqual(f.step_size, 3) + def test_integerfield_localized(self): """ A localized IntegerField's widget renders to a text input without any |
