summaryrefslogtreecommitdiff
path: root/tests/forms_tests
diff options
context:
space:
mode:
authorJosh Schneier <josh.schneier@gmail.com>2017-09-05 12:41:38 -0400
committerTim Graham <timograham@gmail.com>2017-09-05 12:41:38 -0400
commit48c394a6fc2594891f766293afec8f86d63e1015 (patch)
tree370c31289c1d9ea46323289c31065a629914177f /tests/forms_tests
parent79ae5811c7b06b6462f9411b6665241a4e98bedb (diff)
Fixed #28555 -- Made CharField convert whitespace-only values to the empty_value when strip is enabled.
Diffstat (limited to 'tests/forms_tests')
-rw-r--r--tests/forms_tests/field_tests/test_charfield.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/forms_tests/field_tests/test_charfield.py b/tests/forms_tests/field_tests/test_charfield.py
index 8f6a27f473..ad91070571 100644
--- a/tests/forms_tests/field_tests/test_charfield.py
+++ b/tests/forms_tests/field_tests/test_charfield.py
@@ -120,6 +120,29 @@ class CharFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
self.assertEqual(f.clean(' 1'), ' 1')
self.assertEqual(f.clean('1 '), '1 ')
+ def test_strip_before_checking_empty(self):
+ """
+ A whitespace-only value, ' ', is stripped to an empty string and then
+ converted to the empty value, None.
+ """
+ f = CharField(required=False, empty_value=None)
+ self.assertIsNone(f.clean(' '))
+
+ def test_clean_non_string(self):
+ """CharField.clean() calls str(value) before stripping it."""
+ class StringWrapper:
+ def __init__(self, v):
+ self.v = v
+
+ def __str__(self):
+ return self.v
+
+ value = StringWrapper(' ')
+ f1 = CharField(required=False, empty_value=None)
+ self.assertIsNone(f1.clean(value))
+ f2 = CharField(strip=False)
+ self.assertEqual(f2.clean(value), ' ')
+
def test_charfield_disabled(self):
f = CharField(disabled=True)
self.assertWidgetRendersTo(f, '<input type="text" name="f" id="id_f" disabled required />')