diff options
| author | Kapil Bansal <kapilbansal.gbpecdelhi@gmail.com> | 2022-05-12 11:30:47 +0200 |
|---|---|---|
| committer | Carlton Gibson <carlton@noumenal.es> | 2022-05-12 14:16:52 +0200 |
| commit | 3a82b5f655446f0ca89e3b6a92b100aa458f348f (patch) | |
| tree | 6e600054369b9316865b3b5b3ab1838769a2b54e /tests | |
| parent | 68da6b389c403cb91650754be0e2287696807333 (diff) | |
Fixed #32559 -- Added 'step_size’ to numeric form fields.
Co-authored-by: Jacob Rief <jacob.rief@uibk.ac.at>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/forms_tests/field_tests/test_floatfield.py | 15 | ||||
| -rw-r--r-- | tests/forms_tests/field_tests/test_integerfield.py | 14 | ||||
| -rw-r--r-- | tests/validators/tests.py | 18 |
3 files changed, 47 insertions, 0 deletions
diff --git a/tests/forms_tests/field_tests/test_floatfield.py b/tests/forms_tests/field_tests/test_floatfield.py index f6022807be..94676fb9ee 100644 --- a/tests/forms_tests/field_tests/test_floatfield.py +++ b/tests/forms_tests/field_tests/test_floatfield.py @@ -70,6 +70,21 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase): self.assertEqual(f.max_value, 1.5) self.assertEqual(f.min_value, 0.5) + def test_floatfield_4(self): + f = FloatField(step_size=0.02) + self.assertWidgetRendersTo( + f, + '<input name="f" step="0.02" type="number" id="id_f" required>', + ) + msg = "'Ensure this value is a multiple of step size 0.02.'" + with self.assertRaisesMessage(ValidationError, msg): + f.clean("0.01") + self.assertEqual(2.34, f.clean("2.34")) + self.assertEqual(2.1, f.clean("2.1")) + self.assertEqual(-0.50, f.clean("-.5")) + self.assertEqual(-1.26, f.clean("-1.26")) + 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 15314d53a4..1361b5cc9e 100644 --- a/tests/forms_tests/field_tests/test_integerfield.py +++ b/tests/forms_tests/field_tests/test_integerfield.py @@ -112,6 +112,20 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): self.assertEqual(f.max_value, 20) self.assertEqual(f.min_value, 10) + def test_integerfield_6(self): + f = IntegerField(step_size=3) + self.assertWidgetRendersTo( + f, + '<input name="f" step="3" type="number" id="id_f" required>', + ) + with self.assertRaisesMessage( + ValidationError, "'Ensure this value is a multiple of step size 3.'" + ): + f.clean("10") + self.assertEqual(12, f.clean(12)) + self.assertEqual(12, f.clean("12")) + self.assertEqual(f.step_size, 3) + def test_integerfield_localized(self): """ A localized IntegerField's widget renders to a text input without any diff --git a/tests/validators/tests.py b/tests/validators/tests.py index 79369b172e..f9ffdfd605 100644 --- a/tests/validators/tests.py +++ b/tests/validators/tests.py @@ -17,6 +17,7 @@ from django.core.validators import ( MinValueValidator, ProhibitNullCharactersValidator, RegexValidator, + StepValueValidator, URLValidator, int_list_validator, validate_comma_separated_integer_list, @@ -440,12 +441,21 @@ TEST_DATA = [ # limit_value may be a callable. (MinValueValidator(lambda: 1), 0, ValidationError), (MinValueValidator(lambda: 1), 1, None), + (StepValueValidator(3), 0, None), (MaxLengthValidator(10), "", None), (MaxLengthValidator(10), 10 * "x", None), (MaxLengthValidator(10), 15 * "x", ValidationError), (MinLengthValidator(10), 15 * "x", None), (MinLengthValidator(10), 10 * "x", None), (MinLengthValidator(10), "", ValidationError), + (StepValueValidator(3), 1, ValidationError), + (StepValueValidator(3), 8, ValidationError), + (StepValueValidator(3), 9, None), + (StepValueValidator(0.001), 0.55, None), + (StepValueValidator(0.001), 0.5555, ValidationError), + (StepValueValidator(Decimal(0.02)), 0.88, None), + (StepValueValidator(Decimal(0.02)), Decimal(0.88), None), + (StepValueValidator(Decimal(0.02)), Decimal(0.77), ValidationError), (URLValidator(EXTENDED_SCHEMES), "file://localhost/path", None), (URLValidator(EXTENDED_SCHEMES), "git://example.com/", None), ( @@ -715,6 +725,10 @@ class TestValidatorEquality(TestCase): MaxValueValidator(44), ) self.assertEqual(MaxValueValidator(44), mock.ANY) + self.assertEqual( + StepValueValidator(0.003), + StepValueValidator(0.003), + ) self.assertNotEqual( MaxValueValidator(44), MinValueValidator(44), @@ -723,6 +737,10 @@ class TestValidatorEquality(TestCase): MinValueValidator(45), MinValueValidator(11), ) + self.assertNotEqual( + StepValueValidator(3), + StepValueValidator(2), + ) def test_decimal_equality(self): self.assertEqual( |
