summaryrefslogtreecommitdiff
path: root/tests/forms_tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2022-02-04 08:08:27 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-02-07 20:37:05 +0100
commit7119f40c9881666b6f9b5cf7df09ee1d21cc8344 (patch)
treefa50869f5614295f462d9bf77fec59365c621609 /tests/forms_tests
parent9c19aff7c7561e3a82978a272ecdaad40dda5c00 (diff)
downloaddjango-7119f40c9881666b6f9b5cf7df09ee1d21cc8344.tar.gz
Refs #33476 -- Refactored code to strictly match 88 characters line length.
Diffstat (limited to 'tests/forms_tests')
-rw-r--r--tests/forms_tests/field_tests/test_booleanfield.py3
-rw-r--r--tests/forms_tests/field_tests/test_decimalfield.py3
-rw-r--r--tests/forms_tests/field_tests/test_emailfield.py3
-rw-r--r--tests/forms_tests/field_tests/test_floatfield.py6
-rw-r--r--tests/forms_tests/field_tests/test_multivaluefield.py9
-rw-r--r--tests/forms_tests/field_tests/test_nullbooleanfield.py9
-rw-r--r--tests/forms_tests/models.py7
-rw-r--r--tests/forms_tests/tests/test_forms.py919
-rw-r--r--tests/forms_tests/tests/test_formsets.py72
-rw-r--r--tests/forms_tests/tests/test_i18n.py37
-rw-r--r--tests/forms_tests/tests/test_input_formats.py50
-rw-r--r--tests/forms_tests/tests/test_media.py192
-rw-r--r--tests/forms_tests/tests/test_utils.py6
-rw-r--r--tests/forms_tests/tests/tests.py234
-rw-r--r--tests/forms_tests/widget_tests/test_checkboxinput.py3
-rw-r--r--tests/forms_tests/widget_tests/test_checkboxselectmultiple.py100
-rw-r--r--tests/forms_tests/widget_tests/test_clearablefileinput.py14
-rw-r--r--tests/forms_tests/widget_tests/test_datetimeinput.py5
-rw-r--r--tests/forms_tests/widget_tests/test_multiplehiddeninput.py23
-rw-r--r--tests/forms_tests/widget_tests/test_multiwidget.py6
-rw-r--r--tests/forms_tests/widget_tests/test_numberinput.py3
-rw-r--r--tests/forms_tests/widget_tests/test_radioselect.py91
-rw-r--r--tests/forms_tests/widget_tests/test_select.py12
-rw-r--r--tests/forms_tests/widget_tests/test_selectdatewidget.py3
-rw-r--r--tests/forms_tests/widget_tests/test_textarea.py6
-rw-r--r--tests/forms_tests/widget_tests/test_textinput.py13
26 files changed, 1160 insertions, 669 deletions
diff --git a/tests/forms_tests/field_tests/test_booleanfield.py b/tests/forms_tests/field_tests/test_booleanfield.py
index 560a0f473b..d6b5121b10 100644
--- a/tests/forms_tests/field_tests/test_booleanfield.py
+++ b/tests/forms_tests/field_tests/test_booleanfield.py
@@ -52,7 +52,8 @@ class BooleanFieldTest(SimpleTestCase):
self.assertTrue(f.has_changed(True, ""))
# Initial value may have mutated to a string due to show_hidden_initial (#19537)
self.assertTrue(f.has_changed("False", "on"))
- # HiddenInput widget sends string values for boolean but doesn't clean them in value_from_datadict
+ # HiddenInput widget sends string values for boolean but doesn't clean
+ # them in value_from_datadict.
self.assertFalse(f.has_changed(False, "False"))
self.assertFalse(f.has_changed(True, "True"))
self.assertTrue(f.has_changed(False, "True"))
diff --git a/tests/forms_tests/field_tests/test_decimalfield.py b/tests/forms_tests/field_tests/test_decimalfield.py
index 6e49a41341..119a74292c 100644
--- a/tests/forms_tests/field_tests/test_decimalfield.py
+++ b/tests/forms_tests/field_tests/test_decimalfield.py
@@ -105,7 +105,8 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
)
self.assertWidgetRendersTo(
f,
- '<input step="0.01" name="f" min="0.5" max="1.5" type="number" id="id_f" required>',
+ '<input step="0.01" name="f" min="0.5" max="1.5" type="number" id="id_f" '
+ "required>",
)
with self.assertRaisesMessage(
ValidationError, "'Ensure this value is less than or equal to 1.5.'"
diff --git a/tests/forms_tests/field_tests/test_emailfield.py b/tests/forms_tests/field_tests/test_emailfield.py
index d1d52dd608..869a1aacc5 100644
--- a/tests/forms_tests/field_tests/test_emailfield.py
+++ b/tests/forms_tests/field_tests/test_emailfield.py
@@ -49,7 +49,8 @@ class EmailFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = EmailField(min_length=10, max_length=15)
self.assertWidgetRendersTo(
f,
- '<input id="id_f" type="email" name="f" maxlength="15" minlength="10" required>',
+ '<input id="id_f" type="email" name="f" maxlength="15" minlength="10" '
+ "required>",
)
with self.assertRaisesMessage(
ValidationError,
diff --git a/tests/forms_tests/field_tests/test_floatfield.py b/tests/forms_tests/field_tests/test_floatfield.py
index 365684c2db..f6022807be 100644
--- a/tests/forms_tests/field_tests/test_floatfield.py
+++ b/tests/forms_tests/field_tests/test_floatfield.py
@@ -54,7 +54,8 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = FloatField(max_value=1.5, min_value=0.5)
self.assertWidgetRendersTo(
f,
- '<input step="any" name="f" min="0.5" max="1.5" type="number" id="id_f" required>',
+ '<input step="any" name="f" min="0.5" max="1.5" type="number" id="id_f" '
+ "required>",
)
with self.assertRaisesMessage(
ValidationError, "'Ensure this value is less than or equal to 1.5.'"
@@ -73,7 +74,8 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = FloatField(widget=NumberInput(attrs={"step": 0.01, "max": 1.0, "min": 0.0}))
self.assertWidgetRendersTo(
f,
- '<input step="0.01" name="f" min="0.0" max="1.0" type="number" id="id_f" required>',
+ '<input step="0.01" name="f" min="0.0" max="1.0" type="number" id="id_f" '
+ "required>",
)
def test_floatfield_localized(self):
diff --git a/tests/forms_tests/field_tests/test_multivaluefield.py b/tests/forms_tests/field_tests/test_multivaluefield.py
index 88f7490013..4c7664b81e 100644
--- a/tests/forms_tests/field_tests/test_multivaluefield.py
+++ b/tests/forms_tests/field_tests/test_multivaluefield.py
@@ -183,15 +183,18 @@ class MultiValueFieldTest(SimpleTestCase):
form.as_table(),
"""
<tr><th><label>Field1:</label></th>
- <td><input type="text" name="field1_0" value="some text" id="id_field1_0" required>
+ <td><input type="text" name="field1_0" value="some text" id="id_field1_0"
+ required>
<select multiple name="field1_1" id="id_field1_1" required>
<option value="J" selected>John</option>
<option value="P" selected>Paul</option>
<option value="G">George</option>
<option value="R">Ringo</option>
</select>
- <input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0" required>
- <input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1" required></td></tr>
+ <input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0"
+ required>
+ <input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1"
+ required></td></tr>
""",
)
diff --git a/tests/forms_tests/field_tests/test_nullbooleanfield.py b/tests/forms_tests/field_tests/test_nullbooleanfield.py
index 5b632c8de3..c1e120c0bb 100644
--- a/tests/forms_tests/field_tests/test_nullbooleanfield.py
+++ b/tests/forms_tests/field_tests/test_nullbooleanfield.py
@@ -27,9 +27,11 @@ class NullBooleanFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = HiddenNullBooleanForm()
self.assertHTMLEqual(
- '<input type="hidden" name="hidden_nullbool1" value="True" id="id_hidden_nullbool1">'
- '<input type="hidden" name="hidden_nullbool2" value="False" id="id_hidden_nullbool2">',
str(f),
+ '<input type="hidden" name="hidden_nullbool1" value="True" '
+ 'id="id_hidden_nullbool1">'
+ '<input type="hidden" name="hidden_nullbool2" value="False" '
+ 'id="id_hidden_nullbool2">',
)
def test_nullbooleanfield_3(self):
@@ -69,7 +71,8 @@ class NullBooleanFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
self.assertTrue(f.has_changed(True, False))
self.assertTrue(f.has_changed(True, None))
self.assertTrue(f.has_changed(True, False))
- # HiddenInput widget sends string values for boolean but doesn't clean them in value_from_datadict
+ # HiddenInput widget sends string values for boolean but doesn't clean
+ # them in value_from_datadict.
self.assertFalse(f.has_changed(False, "False"))
self.assertFalse(f.has_changed(True, "True"))
self.assertFalse(f.has_changed(None, ""))
diff --git a/tests/forms_tests/models.py b/tests/forms_tests/models.py
index ae212f332d..d6d0725b32 100644
--- a/tests/forms_tests/models.py
+++ b/tests/forms_tests/models.py
@@ -56,8 +56,11 @@ class ChoiceModel(models.Model):
class ChoiceOptionModel(models.Model):
- """Destination for ChoiceFieldModel's ForeignKey.
- Can't reuse ChoiceModel because error_message tests require that it have no instances."""
+ """
+ Destination for ChoiceFieldModel's ForeignKey.
+ Can't reuse ChoiceModel because error_message tests require that it have no
+ instances.
+ """
name = models.CharField(max_length=10)
diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py
index 5467cee9ad..c5376b115f 100644
--- a/tests/forms_tests/tests/test_forms.py
+++ b/tests/forms_tests/tests/test_forms.py
@@ -101,18 +101,24 @@ class FormsTestCase(SimpleTestCase):
self.assertEqual(p.cleaned_data["birthday"], datetime.date(1940, 10, 9))
self.assertHTMLEqual(
str(p["first_name"]),
- '<input type="text" name="first_name" value="John" id="id_first_name" required>',
+ '<input type="text" name="first_name" value="John" id="id_first_name" '
+ "required>",
)
self.assertHTMLEqual(
str(p["last_name"]),
- '<input type="text" name="last_name" value="Lennon" id="id_last_name" required>',
+ '<input type="text" name="last_name" value="Lennon" id="id_last_name" '
+ "required>",
)
self.assertHTMLEqual(
str(p["birthday"]),
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required>',
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" '
+ "required>",
)
- msg = "Key 'nonexistentfield' not found in 'Person'. Choices are: birthday, first_name, last_name."
+ msg = (
+ "Key 'nonexistentfield' not found in 'Person'. Choices are: birthday, "
+ "first_name, last_name."
+ )
with self.assertRaisesMessage(KeyError, msg):
p["nonexistentfield"]
@@ -143,12 +149,17 @@ class FormsTestCase(SimpleTestCase):
)
self.assertHTMLEqual(
str(p),
- """<tr><th><label for="id_first_name">First name:</label></th><td>
-<input type="text" name="first_name" value="John" id="id_first_name" required></td></tr>
-<tr><th><label for="id_last_name">Last name:</label></th><td>
-<input type="text" name="last_name" value="Lennon" id="id_last_name" required></td></tr>
-<tr><th><label for="id_birthday">Birthday:</label></th><td>
-<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></td></tr>""",
+ """
+ <tr><th><label for="id_first_name">First name:</label></th><td>
+ <input type="text" name="first_name" value="John" id="id_first_name"
+ required></td></tr>
+ <tr><th><label for="id_last_name">Last name:</label></th><td>
+ <input type="text" name="last_name" value="Lennon" id="id_last_name"
+ required></td></tr>
+ <tr><th><label for="id_birthday">Birthday:</label></th><td>
+ <input type="text" name="birthday" value="1940-10-9" id="id_birthday"
+ required></td></tr>
+ """,
)
def test_empty_dict(self):
@@ -276,33 +287,41 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_table(),
'<tr><th><label for="id_first_name">First name:</label></th><td>'
- '<input type="text" name="first_name" value="John" id="id_first_name" required></td></tr>\n'
+ '<input type="text" name="first_name" value="John" id="id_first_name" '
+ "required></td></tr>\n"
'<tr><th><label for="id_last_name">Last name:</label>'
'</th><td><input type="text" name="last_name" '
'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111"'
'id="id_last_name" required></td></tr>\n'
'<tr><th><label for="id_birthday">Birthday:</label></th><td>'
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></td></tr>',
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" '
+ "required></td></tr>",
)
self.assertHTMLEqual(
p.as_ul(),
'<li><label for="id_first_name">First name:</label> '
- '<input type="text" name="first_name" value="John" id="id_first_name" required></li>\n'
+ '<input type="text" name="first_name" value="John" id="id_first_name" '
+ "required></li>\n"
'<li><label for="id_last_name">Last name:</label> '
'<input type="text" name="last_name" '
- 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required></li>\n'
+ 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" '
+ 'id="id_last_name" required></li>\n'
'<li><label for="id_birthday">Birthday:</label> '
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></li>',
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" '
+ "required></li>",
)
self.assertHTMLEqual(
p.as_p(),
'<p><label for="id_first_name">First name:</label> '
- '<input type="text" name="first_name" value="John" id="id_first_name" required></p>\n'
+ '<input type="text" name="first_name" value="John" id="id_first_name" '
+ "required></p>\n"
'<p><label for="id_last_name">Last name:</label> '
'<input type="text" name="last_name" '
- 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required></p>\n'
+ 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" '
+ 'id="id_last_name" required></p>\n'
'<p><label for="id_birthday">Birthday:</label> '
- '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></p>',
+ '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" '
+ "required></p>",
)
p = Person({"last_name": "Lennon"})
@@ -357,11 +376,11 @@ class FormsTestCase(SimpleTestCase):
self.assertEqual(p.cleaned_data["birthday"], datetime.date(1940, 10, 9))
def test_optional_data(self):
- # cleaned_data will include a key and value for *all* fields defined in the Form,
- # even if the Form's data didn't include a value for fields that are not
- # required. In this example, the data dictionary doesn't include a value for the
- # "nick_name" field, but cleaned_data includes it. For CharFields, it's set to the
- # empty string.
+ # cleaned_data will include a key and value for *all* fields defined in
+ # the Form, even if the Form's data didn't include a value for fields
+ # that are not required. In this example, the data dictionary doesn't
+ # include a value for the "nick_name" field, but cleaned_data includes
+ # it. For CharFields, it's set to the empty string.
class OptionalPersonForm(Form):
first_name = CharField()
last_name = CharField()
@@ -388,10 +407,10 @@ class FormsTestCase(SimpleTestCase):
self.assertEqual(f.cleaned_data["last_name"], "Lennon")
def test_auto_id(self):
- # "auto_id" tells the Form to add an "id" attribute to each form element.
- # If it's a string that contains '%s', Django will use that as a format string
- # into which the field's name will be inserted. It will also put a <label> around
- # the human-readable labels for a field.
+ # "auto_id" tells the Form to add an "id" attribute to each form
+ # element. If it's a string that contains '%s', Django will use that as
+ # a format string into which the field's name will be inserted. It will
+ # also put a <label> around the human-readable labels for a field.
p = Person(auto_id="%s_id")
self.assertHTMLEqual(
p.as_table(),
@@ -728,18 +747,21 @@ class FormsTestCase(SimpleTestCase):
</div></li>""",
)
- # Regarding auto_id and <label>, RadioSelect is a special case. Each radio button
- # gets a distinct ID, formed by appending an underscore plus the button's
- # zero-based index.
+ # Regarding auto_id and <label>, RadioSelect is a special case. Each
+ # radio button gets a distinct ID, formed by appending an underscore
+ # plus the button's zero-based index.
f = FrameworkForm(auto_id="id_%s")
self.assertHTMLEqual(
str(f["language"]),
- """<div id="id_language">
-<div><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
-Python</label></div>
-<div><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
-Java</label></div>
-</div>""",
+ """
+ <div id="id_language">
+ <div><label for="id_language_0">
+ <input type="radio" id="id_language_0" value="P" name="language" required>
+ Python</label></div>
+ <div><label for="id_language_1">
+ <input type="radio" id="id_language_1" value="J" name="language" required>
+ Java</label></div>
+ </div>""",
)
# When RadioSelect is used with auto_id, and the whole form is printed
@@ -748,33 +770,47 @@ Java</label></div>
# accessibility for screen reader users.
self.assertHTMLEqual(
f.as_table(),
- """<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" id="id_name" required></td></tr>
-<tr><th><label>Language:</label></th><td><div id="id_language">
-<div><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
-Python</label></div>
-<div><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
-Java</label></div>
-</div></td></tr>""",
+ """
+ <tr><th><label for="id_name">Name:</label></th><td>
+ <input type="text" name="name" id="id_name" required></td></tr>
+ <tr><th><label>Language:</label></th><td><div id="id_language">
+ <div><label for="id_language_0">
+ <input type="radio" id="id_language_0" value="P" name="language" required>
+ Python</label></div>
+ <div><label for="id_language_1">
+ <input type="radio" id="id_language_1" value="J" name="language" required>
+ Java</label></div>
+ </div></td></tr>""",
)
self.assertHTMLEqual(
f.as_ul(),
- """<li><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></li>
-<li><label>Language:</label> <div id="id_language">
-<div><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
-Python</label></div>
-<div><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
-Java</label></div>
-</div></li>""",
+ """
+ <li><label for="id_name">Name:</label>
+ <input type="text" name="name" id="id_name" required></li>
+ <li><label>Language:</label> <div id="id_language">
+ <div><label for="id_language_0">
+ <input type="radio" id="id_language_0" value="P" name="language" required>
+ Python</label></div>
+ <div><label for="id_language_1">
+ <input type="radio" id="id_language_1" value="J" name="language" required>
+ Java</label></div>
+ </div></li>
+ """,
)
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></p>
-<p><label>Language:</label> <div id="id_language">
-<div><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required>
-Python</label></div>
-<div><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required>
-Java</label></div>
-</div></p>""",
+ """
+ <p><label for="id_name">Name:</label>
+ <input type="text" name="name" id="id_name" required></p>
+ <p><label>Language:</label> <div id="id_language">
+ <div><label for="id_language_0">
+ <input type="radio" id="id_language_0" value="P" name="language" required>
+ Python</label></div>
+ <div><label for="id_language_1">
+ <input type="radio" id="id_language_1" value="J" name="language" required>
+ Java</label></div>
+ </div></p>
+ """,
)
def test_form_with_iterable_boundfield(self):
@@ -799,10 +835,17 @@ Java</label></div>
)
self.assertHTMLEqual(
"\n".join("<div>%s</div>" % bf for bf in f["name"]),
- """<div><label><input type="radio" name="name" value="john" required> John</label></div>
-<div><label><input type="radio" name="name" value="paul" required> Paul</label></div>
-<div><label><input type="radio" name="name" value="george" required> George</label></div>
-<div><label><input type="radio" name="name" value="ringo" required> Ringo</label></div>""",
+ """
+ <div><label>
+ <input type="radio" name="name" value="john" required> John</label></div>
+ <div><label>
+ <input type="radio" name="name" value="paul" required> Paul</label></div>
+ <div><label>
+ <input type="radio" name="name" value="george" required> George
+ </label></div>
+ <div><label>
+ <input type="radio" name="name" value="ringo" required> Ringo</label></div>
+ """,
)
def test_form_with_iterable_boundfield_id(self):
@@ -858,7 +901,7 @@ Java</label></div>
fields = list(BeatleForm(auto_id=False)["name"])
self.assertEqual(len(fields), 4)
- self.assertEqual(fields[0].id_for_label, None)
+ self.assertIsNone(fields[0].id_for_label)
self.assertEqual(fields[0].choice_label, "John")
self.assertHTMLEqual(fields[0].tag(), '<option value="john">John</option>')
self.assertHTMLEqual(str(fields[0]), '<option value="john">John</option>')
@@ -1093,7 +1136,8 @@ Java</label></div>
self.assertTrue(f.is_valid())
self.assertHTMLEqual(
str(f["when"]),
- '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" required>'
+ '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" '
+ "required>"
'<input type="text" name="when_1" value="01:01" id="id_when_1" required>',
)
self.assertHTMLEqual(
@@ -1107,26 +1151,38 @@ Java</label></div>
f = SongForm(auto_id=False)
self.assertHTMLEqual(
str(f["composers"]),
- """<div>
-<div><label><input type="checkbox" name="composers" value="J"> John Lennon</label></div>
-<div><label><input type="checkbox" name="composers" value="P"> Paul McCartney</label></div>
-</div>""",
+ """
+ <div>
+ <div><label><input type="checkbox" name="composers" value="J">
+ John Lennon</label></div>
+ <div><label><input type="checkbox" name="composers" value="P">
+ Paul McCartney</label></div>
+ </div>
+ """,
)
f = SongForm({"composers": ["J"]}, auto_id=False)
self.assertHTMLEqual(
str(f["composers"]),
- """<div>
-<div><label><input checked type="checkbox" name="composers" value="J"> John Lennon</label></div>
-<div><label><input type="checkbox" name="composers" value="P"> Paul McCartney</label></div>
-</div>""",
+ """
+ <div>
+ <div><label><input checked type="checkbox" name="composers" value="J">
+ John Lennon</label></div>
+ <div><label><input type="checkbox" name="composers" value="P">
+ Paul McCartney</label></div>
+ </div>
+ """,
)
f = SongForm({"composers": ["J", "P"]}, auto_id=False)
self.assertHTMLEqual(
str(f["composers"]),
- """<div>
-<div><label><input checked type="checkbox" name="composers" value="J"> John Lennon</label></div>
-<div><label><input checked type="checkbox" name="composers" value="P"> Paul McCartney</label></div>
-</div>""",
+ """
+ <div>
+ <div><label><input checked type="checkbox" name="composers" value="J">
+ John Lennon</label></div>
+ <div><label><input checked type="checkbox" name="composers" value="P">
+ Paul McCartney</label></div>
+ </div>
+ """,
)
def test_checkbox_auto_id(self):
@@ -1143,12 +1199,16 @@ Java</label></div>
f = SongForm(auto_id="%s_id")
self.assertHTMLEqual(
str(f["composers"]),
- """<div id="composers_id">
-<div><label for="composers_id_0">
-<input type="checkbox" name="composers" value="J" id="composers_id_0"> John Lennon</label></div>
-<div><label for="composers_id_1">
-<input type="checkbox" name="composers" value="P" id="composers_id_1"> Paul McCartney</label></div>
-</div>""",
+ """
+ <div id="composers_id">
+ <div><label for="composers_id_0">
+ <input type="checkbox" name="composers" value="J" id="composers_id_0">
+ John Lennon</label></div>
+ <div><label for="composers_id_1">
+ <input type="checkbox" name="composers" value="P" id="composers_id_1">
+ Paul McCartney</label></div>
+ </div>
+ """,
)
def test_multiple_choice_list_data(self):
@@ -1253,12 +1313,18 @@ Java</label></div>
)
self.assertHTMLEqual(
f.as_table(),
- """<tr><th>&lt;em&gt;Special&lt;/em&gt; Field:</th><td>
-<ul class="errorlist"><li>Something&#x27;s wrong with &#x27;Nothing to escape&#x27;</li></ul>
-<input type="text" name="special_name" value="Nothing to escape" required></td></tr>
-<tr><th><em>Special</em> Field:</th><td>
-<ul class="errorlist"><li>'<b>Nothing to escape</b>' is a safe string</li></ul>
-<input type="text" name="special_safe_name" value="Nothing to escape" required></td></tr>""",
+ """
+ <tr><th>&lt;em&gt;Special&lt;/em&gt; Field:</th><td>
+ <ul class="errorlist">
+ <li>Something&#x27;s wrong with &#x27;Nothing to escape&#x27;</li></ul>
+ <input type="text" name="special_name" value="Nothing to escape" required>
+ </td></tr>
+ <tr><th><em>Special</em> Field:</th><td>
+ <ul class="errorlist">
+ <li>'<b>Nothing to escape</b>' is a safe string</li></ul>
+ <input type="text" name="special_safe_name" value="Nothing to escape"
+ required></td></tr>
+ """,
)
f = EscapingForm(
{
@@ -1269,24 +1335,29 @@ Java</label></div>
)
self.assertHTMLEqual(
f.as_table(),
- """<tr><th>&lt;em&gt;Special&lt;/em&gt; Field:</th><td>
-<ul class="errorlist"><li>Something&#x27;s wrong with &#x27;Should escape &lt; &amp; &gt; and
-&lt;script&gt;alert(&#x27;xss&#x27;)&lt;/script&gt;&#x27;</li></ul>
-<input type="text" name="special_name"
-value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt;/script&gt;" required></td></tr>
-<tr><th><em>Special</em> Field:</th><td>
-<ul class="errorlist"><li>'<b><i>Do not escape</i></b>' is a safe string</li></ul>
-<input type="text" name="special_safe_name" value="&lt;i&gt;Do not escape&lt;/i&gt;" required></td></tr>""",
+ "<tr><th>&lt;em&gt;Special&lt;/em&gt; Field:</th><td>"
+ '<ul class="errorlist"><li>'
+ "Something&#x27;s wrong with &#x27;Should escape &lt; &amp; &gt; and "
+ "&lt;script&gt;alert(&#x27;xss&#x27;)&lt;/script&gt;&#x27;</li></ul>"
+ '<input type="text" name="special_name" value="Should escape &lt; &amp; '
+ '&gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt;/script&gt;" required>'
+ "</td></tr>"
+ "<tr><th><em>Special</em> Field:</th><td>"
+ '<ul class="errorlist">'
+ "<li>'<b><i>Do not escape</i></b>' is a safe string</li></ul>"
+ '<input type="text" name="special_safe_name" '
+ 'value="&lt;i&gt;Do not escape&lt;/i&gt;" required></td></tr>',
)
def test_validating_multiple_fields(self):
- # There are a couple of ways to do multiple-field validation. If you want the
- # validation message to be associated with a particular field, implement the
- # clean_XXX() method on the Form, where XXX is the field name. As in
- # Field.clean(), the clean_XXX() method should return the cleaned value. In the
- # clean_XXX() method, you have access to self.cleaned_data, which is a dictionary
- # of all the data that has been cleaned *so far*, in order by the fields,
- # including the current field (e.g., the field XXX if you're in clean_XXX()).
+ # There are a couple of ways to do multiple-field validation. If you
+ # want the validation message to be associated with a particular field,
+ # implement the clean_XXX() method on the Form, where XXX is the field
+ # name. As in Field.clean(), the clean_XXX() method should return the
+ # cleaned value. In the clean_XXX() method, you have access to
+ # self.cleaned_data, which is a dictionary of all the data that has
+ # been cleaned *so far*, in order by the fields, including the current
+ # field (e.g., the field XXX if you're in clean_XXX()).
class UserRegistration(Form):
username = CharField(max_length=10)
password1 = CharField(widget=PasswordInput)
@@ -1396,19 +1467,30 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
)
self.assertHTMLEqual(
f.as_table(),
- """<tr><td colspan="2">
-<ul class="errorlist nonfield"><li>Please make sure your passwords match.</li></ul></td></tr>
-<tr><th>Username:</th><td><input type="text" name="username" value="adrian" maxlength="10" required></td></tr>
-<tr><th>Password1:</th><td><input type="password" name="password1" required></td></tr>
-<tr><th>Password2:</th><td><input type="password" name="password2" required></td></tr>""",
+ """
+ <tr><td colspan="2">
+ <ul class="errorlist nonfield">
+ <li>Please make sure your passwords match.</li></ul></td></tr>
+ <tr><th>Username:</th><td>
+ <input type="text" name="username" value="adrian" maxlength="10" required>
+ </td></tr>
+ <tr><th>Password1:</th><td>
+ <input type="password" name="password1" required></td></tr>
+ <tr><th>Password2:</th><td>
+ <input type="password" name="password2" required></td></tr>
+ """,
)
self.assertHTMLEqual(
f.as_ul(),
- """<li><ul class="errorlist nonfield">
-<li>Please make sure your passwords match.</li></ul></li>
-<li>Username: <input type="text" name="username" value="adrian" maxlength="10" required></li>
-<li>Password1: <input type="password" name="password1" required></li>
-<li>Password2: <input type="password" name="password2" required></li>""",
+ """
+ <li><ul class="errorlist nonfield">
+ <li>Please make sure your passwords match.</li></ul></li>
+ <li>Username:
+ <input type="text" name="username" value="adrian" maxlength="10" required>
+ </li>
+ <li>Password1: <input type="password" name="password1" required></li>
+ <li>Password2: <input type="password" name="password2" required></li>
+ """,
)
f = UserRegistration(
@@ -1583,9 +1665,14 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
p = Person(auto_id=False)
self.assertHTMLEqual(
p.as_table(),
- """<tr><th>First name:</th><td><input type="text" name="first_name" required></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" required></td></tr>
-<tr><th>Birthday:</th><td><input type="text" name="birthday" required></td></tr>""",
+ """
+ <tr><th>First name:</th><td>
+ <input type="text" name="first_name" required></td></tr>
+ <tr><th>Last name:</th><td>
+ <input type="text" name="last_name" required></td></tr>
+ <tr><th>Birthday:</th><td>
+ <input type="text" name="birthday" required></td></tr>
+ """,
)
# Instances of a dynamic Form do not persist fields from one Form instance to
@@ -1601,15 +1688,19 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>""",
+ """
+ <tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
+ <tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>
+ """,
)
field_list = [("field3", CharField()), ("field4", CharField())]
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>""",
+ """
+ <tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
+ <tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>
+ """,
)
class MyForm(Form):
@@ -1626,19 +1717,27 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required></td></tr>
-<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required></td></tr>
-<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>""",
+ """
+ <tr><th>Default field 1:</th><td>
+ <input type="text" name="default_field_1" required></td></tr>
+ <tr><th>Default field 2:</th><td>
+ <input type="text" name="default_field_2" required></td></tr>
+ <tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
+ <tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>
+ """,
)
field_list = [("field3", CharField()), ("field4", CharField())]
my_form = MyForm(field_list=field_list)
self.assertHTMLEqual(
my_form.as_table(),
- """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required></td></tr>
-<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required></td></tr>
-<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>""",
+ """
+ <tr><th>Default field 1:</th><td>
+ <input type="text" name="default_field_1" required></td></tr>
+ <tr><th>Default field 2:</th><td>
+ <input type="text" name="default_field_2" required></td></tr>
+ <tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
+ <tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>
+ """,
)
# Similarly, changes to field attributes do not persist from one Form instance
@@ -1766,22 +1865,33 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
p = Person(auto_id=False)
self.assertHTMLEqual(
p.as_table(),
- """<tr><th>First name:</th><td><input type="text" name="first_name" required></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" required></td></tr>
-<tr><th>Birthday:</th>
-<td><input type="text" name="birthday" required><input type="hidden" name="hidden_text"></td></tr>""",
+ """
+ <tr><th>First name:</th><td><input type="text" name="first_name" required>
+ </td></tr>
+ <tr><th>Last name:</th><td><input type="text" name="last_name" required>
+ </td></tr>
+ <tr><th>Birthday:</th>
+ <td><input type="text" name="birthday" required>
+ <input type="hidden" name="hidden_text"></td></tr>
+ """,
)
self.assertHTMLEqual(
p.as_ul(),
- """<li>First name: <input type="text" name="first_name" required></li>
-<li>Last name: <input type="text" name="last_name" required></li>
-<li>Birthday: <input type="text" name="birthday" required><input type="hidden" name="hidden_text"></li>""",
+ """
+ <li>First name: <input type="text" name="first_name" required></li>
+ <li>Last name: <input type="text" name="last_name" required></li>
+ <li>Birthday: <input type="text" name="birthday" required>
+ <input type="hidden" name="hidden_text"></li>
+ """,
)
self.assertHTMLEqual(
p.as_p(),
- """<p>First name: <input type="text" name="first_name" required></p>
-<p>Last name: <input type="text" name="last_name" required></p>
-<p>Birthday: <input type="text" name="birthday" required><input type="hidden" name="hidden_text"></p>""",
+ """
+ <p>First name: <input type="text" name="first_name" required></p>
+ <p>Last name: <input type="text" name="last_name" required></p>
+ <p>Birthday: <input type="text" name="birthday" required>
+ <input type="hidden" name="hidden_text"></p>
+ """,
)
# With auto_id set, a HiddenInput still gets an ID, but it doesn't get a label.
@@ -1827,28 +1937,44 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
)
self.assertHTMLEqual(
p.as_table(),
- """<tr><td colspan="2">
-<ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul></td></tr>
-<tr><th>First name:</th><td><input type="text" name="first_name" value="John" required></td></tr>
-<tr><th>Last name:</th><td><input type="text" name="last_name" value="Lennon" required></td></tr>
-<tr><th>Birthday:</th><td><input type="text" name="birthday" value="1940-10-9" required>
-<input type="hidden" name="hidden_text"></td></tr>""",
+ """
+ <tr><td colspan="2">
+ <ul class="errorlist nonfield"><li>
+ (Hidden field hidden_text) This field is required.</li></ul></td></tr>
+ <tr><th>First name:</th><td>
+ <input type="text" name="first_name" value="John" required></td></tr>
+ <tr><th>Last name:</th><td>
+ <input type="text" name="last_name" value="Lennon" required></td></tr>
+ <tr><th>Birthday:</th><td>
+ <input type="text" name="birthday" value="1940-10-9" required>
+ <input type="hidden" name="hidden_text"></td></tr>
+ """,
)
self.assertHTMLEqual(
p.as_ul(),
- """<li><ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul></li>
-<li>First name: <input type="text" name="first_name" value="John" required></li>
-<li>Last name: <input type="text" name="last_name" value="Lennon" required></li>
-<li>Birthday: <input type="text" name="birthday" value="1940-10-9" required>
-<input type="hidden" name="hidden_text"></li>""",
+ """
+ <li><ul class="errorlist nonfield"><li>
+ (Hidden field hidden_text) This field is required.</li></ul></li>
+ <li>First name: <input type="text" name="first_name" value="John" required>
+ </li>
+ <li>Last name: <input type="text" name="last_name" value="Lennon" required>
+ </li>
+ <li>Birthday: <input type="text" name="birthday" value="1940-10-9" required>
+ <input type="hidden" name="hidden_text"></li>
+ """,
)
self.assertHTMLEqual(
p.as_p(),
- """<ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul>
-<p>First name: <input type="text" name="first_name" value="John" required></p>
-<p>Last name: <input type="text" name="last_name" value="Lennon" required></p>
-<p>Birthday: <input type="text" name="birthday" value="1940-10-9" required>
-<input type="hidden" name="hidden_text"></p>""",
+ """
+ <ul class="errorlist nonfield"><li>
+ (Hidden field hidden_text) This field is required.</li></ul>
+ <p>First name: <input type="text" name="first_name" value="John" required>
+ </p>
+ <p>Last name: <input type="text" name="last_name" value="Lennon" required>
+ </p>
+ <p>Birthday: <input type="text" name="birthday" value="1940-10-9" required>
+ <input type="hidden" name="hidden_text"></p>
+ """,
)
# A corner case: It's possible for a form to have only HiddenInputs.
@@ -1890,20 +2016,11 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
p = TestForm(auto_id=False)
self.assertHTMLEqual(
p.as_table(),
- """<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr>
-<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>
-<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr>
-<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>
-<tr><th>Field5:</th><td><input type="text" name="field5" required></td></tr>
-<tr><th>Field6:</th><td><input type="text" name="field6" required></td></tr>
-<tr><th>Field7:</th><td><input type="text" name="field7" required></td></tr>
-<tr><th>Field8:</th><td><input type="text" name="field8" required></td></tr>
-<tr><th>Field9:</th><td><input type="text" name="field9" required></td></tr>
-<tr><th>Field10:</th><td><input type="text" name="field10" required></td></tr>
-<tr><th>Field11:</th><td><input type="text" name="field11" required></td></tr>
-<tr><th>Field12:</th><td><input type="text" name="field12" required></td></tr>
-<tr><th>Field13:</th><td><input type="text" name="field13" required></td></tr>
-<tr><th>Field14:</th><td><input type="text" name="field14" required></td></tr>""",
+ "".join(
+ f"<tr><th>Field{i}:</th><td>"
+ f'<input type="text" name="field{i}" required></td></tr>'
+ for i in range(1, 15)
+ ),
)
def test_explicit_field_order(self):
@@ -1967,15 +2084,20 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" maxlength="10" required></li>
-<li>Realname: <input type="text" name="realname" maxlength="10" required></li>
-<li>Address: <input type="text" name="address" required></li>""",
+ """
+ <li>Username: <input type="text" name="username" maxlength="10" required>
+ </li>
+ <li>Password: <input type="password" name="password" maxlength="10"
+ required></li>
+ <li>Realname: <input type="text" name="realname" maxlength="10" required>
+ </li>
+ <li>Address: <input type="text" name="address" required></li>
+ """,
)
- # If you specify a custom "attrs" that includes the "maxlength" attribute,
- # the Field's max_length attribute will override whatever "maxlength" you specify
- # in "attrs".
+ # If you specify a custom "attrs" that includes the "maxlength"
+ # attribute, the Field's max_length attribute will override whatever
+ # "maxlength" you specify in "attrs".
class UserRegistration(Form):
username = CharField(
max_length=10, widget=TextInput(attrs={"maxlength": 20})
@@ -2001,9 +2123,13 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Your username: <input type="text" name="username" maxlength="10" required></li>
-<li>Password1: <input type="password" name="password1" required></li>
-<li>Contraseña (de nuevo): <input type="password" name="password2" required></li>""",
+ """
+ <li>Your username:
+ <input type="text" name="username" maxlength="10" required></li>
+ <li>Password1: <input type="password" name="password1" required></li>
+ <li>Contraseña (de nuevo):
+ <input type="password" name="password2" required></li>
+ """,
)
# Labels for as_* methods will only end in a colon if they don't end in other
@@ -2025,14 +2151,22 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
)
self.assertHTMLEqual(
Questions().as_p(),
- """<p><label for="id_q1">The first question:</label> <input type="text" name="q1" id="id_q1" required></p>
-<p><label for="id_q2">What is your name?</label> <input type="text" name="q2" id="id_q2" required></p>
-<p><label for="id_q3">The answer to life is:</label> <input type="text" name="q3" id="id_q3" required></p>
-<p><label for="id_q4">Answer this question!</label> <input type="text" name="q4" id="id_q4" required></p>
-<p><label for="id_q5">The last question. Period.</label> <input type="text" name="q5" id="id_q5" required></p>""",
+ """
+ <p><label for="id_q1">The first question:</label>
+ <input type="text" name="q1" id="id_q1" required></p>
+ <p><label for="id_q2">What is your name?</label>
+ <input type="text" name="q2" id="id_q2" required></p>
+ <p><label for="id_q3">The answer to life is:</label>
+ <input type="text" name="q3" id="id_q3" required></p>
+ <p><label for="id_q4">Answer this question!</label>
+ <input type="text" name="q4" id="id_q4" required></p>
+ <p><label for="id_q5">The last question. Period.</label>
+ <input type="text" name="q5" id="id_q5" required></p>
+ """,
)
- # If a label is set to the empty string for a field, that field won't get a label.
+ # If a label is set to the empty string for a field, that field won't
+ # get a label.
class UserRegistration(Form):
username = CharField(max_length=10, label="")
password = CharField(widget=PasswordInput)
@@ -2046,9 +2180,13 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
p = UserRegistration(auto_id="id_%s")
self.assertHTMLEqual(
p.as_ul(),
- """<li> <input id="id_username" type="text" name="username" maxlength="10" required></li>
-<li><label for="id_password">Password:</label>
-<input type="password" name="password" id="id_password" required></li>""",
+ """
+ <li>
+ <input id="id_username" type="text" name="username" maxlength="10" required>
+ </li>
+ <li><label for="id_password">Password:</label>
+ <input type="password" name="password" id="id_password" required></li>
+ """,
)
# If label is None, Django will auto-create the label from the field name. This
@@ -2073,11 +2211,12 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
)
def test_label_suffix(self):
- # You can specify the 'label_suffix' argument to a Form class to modify the
- # punctuation symbol used at the end of a label. By default, the colon (:) is
- # used, and is only appended to the label if the label doesn't already end with a
- # punctuation symbol: ., !, ? or :. If you specify a different suffix, it will
- # be appended regardless of the last character of the label.
+ # You can specify the 'label_suffix' argument to a Form class to modify
+ # the punctuation symbol used at the end of a label. By default, the
+ # colon (:) is used, and is only appended to the label if the label
+ # doesn't already end with a punctuation symbol: ., !, ? or :. If you
+ # specify a different suffix, it will be appended regardless of the
+ # last character of the label.
class FavoriteForm(Form):
color = CharField(label="Favorite color?")
animal = CharField(label="Favorite animal")
@@ -2111,7 +2250,8 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
self.assertHTMLEqual(
f.as_ul(),
'<li>Favorite color? <input type="text" name="color" required></li>\n'
- '<li>Favorite animal\u2192 <input type="text" name="animal" required></li>\n'
+ "<li>Favorite animal\u2192 "
+ '<input type="text" name="animal" required></li>\n'
'<li>Secret answer = <input type="text" name="answer" required></li>',
)
@@ -2129,8 +2269,11 @@ value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#x27;xss&#x27;)&lt
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" required></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="django"
+ maxlength="10" required></li>
+ <li>Password: <input type="password" name="password" required></li>
+ """,
)
# Here, we're submitting data, so the initial value will *not* be displayed.
@@ -2153,14 +2296,18 @@ Password: <input type="password" name="password" required></li>""",
p = UserRegistration({"username": "foo"}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="foo" maxlength="10"
+ required></li>
+ <li><ul class="errorlist"><li>This field is required.</li></ul>
+ Password: <input type="password" name="password" required></li>
+ """,
)
- # An 'initial' value is *not* used as a fallback if data is not provided. In this
- # example, we don't provide a value for 'username', and the form raises a
- # validation error rather than using the initial value for 'username'.
+ # An 'initial' value is *not* used as a fallback if data is not
+ # provided. In this example, we don't provide a value for 'username',
+ # and the form raises a validation error rather than using the initial
+ # value for 'username'.
p = UserRegistration({"password": "secret"})
self.assertEqual(p.errors["username"], ["This field is required."])
self.assertFalse(p.is_valid())
@@ -2179,14 +2326,20 @@ Password: <input type="password" name="password" required></li>""",
p = UserRegistration(initial={"username": "django"}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" required></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="django"
+ maxlength="10" required></li>
+ <li>Password: <input type="password" name="password" required></li>
+ """,
)
p = UserRegistration(initial={"username": "stephane"}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" required></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="stephane"
+ maxlength="10" required></li>
+ <li>Password: <input type="password" name="password" required></li>
+ """,
)
# The 'initial' parameter is meaningless if you pass data.
@@ -2213,20 +2366,24 @@ Password: <input type="password" name="password" required></li>""",
)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="foo" maxlength="10"
+ required></li>
+ <li><ul class="errorlist"><li>This field is required.</li></ul>
+ Password: <input type="password" name="password" required></li>
+ """,
)
# A dynamic 'initial' value is *not* used as a fallback if data is not provided.
- # In this example, we don't provide a value for 'username', and the form raises a
- # validation error rather than using the initial value for 'username'.
+ # In this example, we don't provide a value for 'username', and the
+ # form raises a validation error rather than using the initial value
+ # for 'username'.
p = UserRegistration({"password": "secret"}, initial={"username": "django"})
self.assertEqual(p.errors["username"], ["This field is required."])
self.assertFalse(p.is_valid())
- # If a Form defines 'initial' *and* 'initial' is passed as a parameter to Form(),
- # then the latter will get precedence.
+ # If a Form defines 'initial' *and* 'initial' is passed as a parameter
+ # to Form(), then the latter will get precedence.
class UserRegistration(Form):
username = CharField(max_length=10, initial="django")
password = CharField(widget=PasswordInput)
@@ -2234,8 +2391,11 @@ Password: <input type="password" name="password" required></li>""",
p = UserRegistration(initial={"username": "babik"}, auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="babik" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" required></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="babik"
+ maxlength="10" required></li>
+ <li>Password: <input type="password" name="password" required></li>
+ """,
)
def test_callable_initial_data(self):
@@ -2268,13 +2428,16 @@ Password: <input type="password" name="password" required></li>""",
)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" required></li>
-<li>Options: <select multiple name="options" required>
-<option value="f" selected>foo</option>
-<option value="b" selected>bar</option>
-<option value="w">whiz</option>
-</select></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="django"
+ maxlength="10" required></li>
+ <li>Password: <input type="password" name="password" required></li>
+ <li>Options: <select multiple name="options" required>
+ <option value="f" selected>foo</option>
+ <option value="b" selected>bar</option>
+ <option value="w">whiz</option>
+ </select></li>
+ """,
)
# The 'initial' parameter is meaningless if you pass data.
@@ -2319,19 +2482,23 @@ Options: <select multiple name="options" required>
)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li>
-<li><ul class="errorlist"><li>This field is required.</li></ul>
-Password: <input type="password" name="password" required></li>
-<li>Options: <select multiple name="options" required>
-<option value="f" selected>foo</option>
-<option value="b" selected>bar</option>
-<option value="w">whiz</option>
-</select></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="foo" maxlength="10"
+ required></li>
+ <li><ul class="errorlist"><li>This field is required.</li></ul>
+ Password: <input type="password" name="password" required></li>
+ <li>Options: <select multiple name="options" required>
+ <option value="f" selected>foo</option>
+ <option value="b" selected>bar</option>
+ <option value="w">whiz</option>
+ </select></li>
+ """,
)
- # A callable 'initial' value is *not* used as a fallback if data is not provided.
- # In this example, we don't provide a value for 'username', and the form raises a
- # validation error rather than using the initial value for 'username'.
+ # A callable 'initial' value is *not* used as a fallback if data is not
+ # provided. In this example, we don't provide a value for 'username',
+ # and the form raises a validation error rather than using the initial
+ # value for 'username'.
p = UserRegistration(
{"password": "secret"},
initial={"username": initial_django, "options": initial_options},
@@ -2339,8 +2506,8 @@ Password: <input type="password" name="password" required></li>
self.assertEqual(p.errors["username"], ["This field is required."])
self.assertFalse(p.is_valid())
- # If a Form defines 'initial' *and* 'initial' is passed as a parameter to Form(),
- # then the latter will get precedence.
+ # If a Form defines 'initial' *and* 'initial' is passed as a parameter
+ # to Form(), then the latter will get precedence.
class UserRegistration(Form):
username = CharField(max_length=10, initial=initial_django)
password = CharField(widget=PasswordInput)
@@ -2352,13 +2519,16 @@ Password: <input type="password" name="password" required></li>
p = UserRegistration(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" required></li>
-<li>Options: <select multiple name="options" required>
-<option value="f">foo</option>
-<option value="b" selected>bar</option>
-<option value="w" selected>whiz</option>
-</select></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="django"
+ maxlength="10" required></li>
+ <li>Password: <input type="password" name="password" required></li>
+ <li>Options: <select multiple name="options" required>
+ <option value="f">foo</option>
+ <option value="b" selected>bar</option>
+ <option value="w" selected>whiz</option>
+ </select></li>
+ """,
)
p = UserRegistration(
initial={"username": initial_stephane, "options": initial_options},
@@ -2366,13 +2536,16 @@ Password: <input type="password" name="password" required></li>
)
self.assertHTMLEqual(
p.as_ul(),
- """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required></li>
-<li>Password: <input type="password" name="password" required></li>
-<li>Options: <select multiple name="options" required>
-<option value="f" selected>foo</option>
-<option value="b" selected>bar</option>
-<option value="w">whiz</option>
-</select></li>""",
+ """
+ <li>Username: <input type="text" name="username" value="stephane"
+ maxlength="10" required></li>
+ <li>Password: <input type="password" name="password" required></li>
+ <li>Options: <select multiple name="options" required>
+ <option value="f" selected>foo</option>
+ <option value="b" selected>bar</option>
+ <option value="w">whiz</option>
+ </select></li>
+ """,
)
def test_get_initial_for_field(self):
@@ -2605,7 +2778,8 @@ Password: <input type="password" name="password" required></li>
self.assertEqual(form.changed_data, [])
def test_help_text(self):
- # You can specify descriptive text for a field by using the 'help_text' argument)
+ # You can specify descriptive text for a field by using the 'help_text'
+ # argument.
class UserRegistration(Form):
username = CharField(max_length=10, help_text="e.g., user@example.com")
password = CharField(
@@ -2629,10 +2803,13 @@ Password: <input type="password" name="password" required></li>
)
self.assertHTMLEqual(
p.as_table(),
- """<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required><br>
-<span class="helptext">e.g., user@example.com</span></td></tr>
-<tr><th>Password:</th><td><input type="password" name="password" required><br>
-<span class="helptext">Wählen Sie mit Bedacht.</span></td></tr>""",
+ """
+ <tr><th>Username:</th><td>
+ <input type="text" name="username" maxlength="10" required><br>
+ <span class="helptext">e.g., user@example.com</span></td></tr>
+ <tr><th>Password:</th><td><input type="password" name="password" required>
+ <br>
+ <span class="helptext">Wählen Sie mit Bedacht.</span></td></tr>""",
)
# The help text is displayed whether or not data is provided for the form.
@@ -2752,13 +2929,14 @@ Password: <input type="password" name="password" required>
)
def test_forms_with_prefixes(self):
- # Sometimes it's necessary to have multiple forms display on the same HTML page,
- # or multiple copies of the same form. We can accomplish this with form prefixes.
- # Pass the keyword argument 'prefix' to the Form constructor to use this feature.
- # This value will be prepended to each HTML form field name. One way to think
- # about this is "namespaces for HTML forms". Notice that in the data argument,
- # each field's key has the prefix, in this case 'person1', prepended to the
- # actual field name.
+ # Sometimes it's necessary to have multiple forms display on the same
+ # HTML page, or multiple copies of the same form. We can accomplish
+ # this with form prefixes. Pass the keyword argument 'prefix' to the
+ # Form constructor to use this feature. This value will be prepended to
+ # each HTML form field name. One way to think about this is "namespaces
+ # for HTML forms". Notice that in the data argument, each field's key
+ # has the prefix, in this case 'person1', prepended to the actual field
+ # name.
class Person(Form):
first_name = CharField()
last_name = CharField()
@@ -2772,24 +2950,32 @@ Password: <input type="password" name="password" required>
p = Person(data, prefix="person1")
self.assertHTMLEqual(
p.as_ul(),
- """<li><label for="id_person1-first_name">First name:</label>
-<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required></li>
-<li><label for="id_person1-last_name">Last name:</label>
-<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required></li>
-<li><label for="id_person1-birthday">Birthday:</label>
-<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required></li>""",
+ """
+ <li><label for="id_person1-first_name">First name:</label>
+ <input type="text" name="person1-first_name" value="John"
+ id="id_person1-first_name" required></li>
+ <li><label for="id_person1-last_name">Last name:</label>
+ <input type="text" name="person1-last_name" value="Lennon"
+ id="id_person1-last_name" required></li>
+ <li><label for="id_person1-birthday">Birthday:</label>
+ <input type="text" name="person1-birthday" value="1940-10-9"
+ id="id_person1-birthday" required></li>
+ """,
)
self.assertHTMLEqual(
str(p["first_name"]),
- '<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required>',
+ '<input type="text" name="person1-first_name" value="John" '
+ 'id="id_person1-first_name" required>',
)
self.assertHTMLEqual(
str(p["last_name"]),
- '<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required>',
+ '<input type="text" name="person1-last_name" value="Lennon" '
+ 'id="id_person1-last_name" required>',
)
self.assertHTMLEqual(
str(p["birthday"]),
- '<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required>',
+ '<input type="text" name="person1-birthday" value="1940-10-9" '
+ 'id="id_person1-birthday" required>',
)
self.assertEqual(p.errors, {})
self.assertTrue(p.is_valid())
@@ -2861,12 +3047,17 @@ Password: <input type="password" name="password" required>
p = Person(prefix="foo")
self.assertHTMLEqual(
p.as_ul(),
- """<li><label for="id_foo-prefix-first_name">First name:</label>
-<input type="text" name="foo-prefix-first_name" id="id_foo-prefix-first_name" required></li>
-<li><label for="id_foo-prefix-last_name">Last name:</label>
-<input type="text" name="foo-prefix-last_name" id="id_foo-prefix-last_name" required></li>
-<li><label for="id_foo-prefix-birthday">Birthday:</label>
-<input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" required></li>""",
+ """
+ <li><label for="id_foo-prefix-first_name">First name:</label>
+ <input type="text" name="foo-prefix-first_name"
+ id="id_foo-prefix-first_name" required></li>
+ <li><label for="id_foo-prefix-last_name">Last name:</label>
+ <input type="text" name="foo-prefix-last_name" id="id_foo-prefix-last_name"
+ required></li>
+ <li><label for="id_foo-prefix-birthday">Birthday:</label>
+ <input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday"
+ required></li>
+ """,
)
data = {
"foo-prefix-first_name": "John",
@@ -2981,15 +3172,16 @@ Password: <input type="password" name="password" required>
)
def test_forms_with_file_fields(self):
- # FileFields are a special case because they take their data from the request.FILES,
- # not request.POST.
+ # FileFields are a special case because they take their data from the
+ # request.FILES, not request.POST.
class FileForm(Form):
file1 = FileField()
f = FileForm(auto_id=False)
self.assertHTMLEqual(
f.as_table(),
- '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>',
+ "<tr><th>File1:</th><td>"
+ '<input type="file" name="file1" required></td></tr>',
)
f = FileForm(data={}, files={}, auto_id=False)
@@ -3028,7 +3220,8 @@ Password: <input type="password" name="password" required>
)
self.assertHTMLEqual(
f.as_table(),
- '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>',
+ "<tr><th>File1:</th><td>"
+ '<input type="file" name="file1" required></td></tr>',
)
self.assertTrue(f.is_valid())
@@ -3038,7 +3231,8 @@ Password: <input type="password" name="password" required>
f = FileForm(data={}, files={"file1": file1}, auto_id=False)
self.assertHTMLEqual(
f.as_table(),
- '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>',
+ "<tr><th>File1:</th><td>"
+ '<input type="file" name="file1" required></td></tr>',
)
# A required file field with initial data should not contain the
@@ -3158,9 +3352,10 @@ Password: <input type="password" name="password" required>
self.assertHTMLEqual(
MyForm().as_table(),
- '<tr><th><label for="id_field1">Field1:</label></th>'
- '<td><input id="id_field1" type="text" name="field1" maxlength="50" required>'
- '<input type="hidden" name="initial-field1" id="initial-id_field1"></td></tr>',
+ '<tr><th><label for="id_field1">Field1:</label></th><td>'
+ '<input id="id_field1" type="text" name="field1" maxlength="50" required>'
+ '<input type="hidden" name="initial-field1" id="initial-id_field1">'
+ "</td></tr>",
)
def test_error_html_required_html_classes(self):
@@ -3176,34 +3371,46 @@ Password: <input type="password" name="password" required>
self.assertHTMLEqual(
p.as_ul(),
- """<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul>
-<label class="required" for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></li>
-<li class="required"><label class="required" for="id_is_cool">Is cool:</label>
-<select name="is_cool" id="id_is_cool">
-<option value="unknown" selected>Unknown</option>
-<option value="true">Yes</option>
-<option value="false">No</option>
-</select></li>
-<li><label for="id_email">Email:</label> <input type="email" name="email" id="id_email"></li>
-<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul>
-<label class="required" for="id_age">Age:</label> <input type="number" name="age" id="id_age" required></li>""",
+ """
+ <li class="required error"><ul class="errorlist">
+ <li>This field is required.</li></ul>
+ <label class="required" for="id_name">Name:</label>
+ <input type="text" name="name" id="id_name" required></li>
+ <li class="required">
+ <label class="required" for="id_is_cool">Is cool:</label>
+ <select name="is_cool" id="id_is_cool">
+ <option value="unknown" selected>Unknown</option>
+ <option value="true">Yes</option>
+ <option value="false">No</option>
+ </select></li>
+ <li><label for="id_email">Email:</label>
+ <input type="email" name="email" id="id_email"></li>
+ <li class="required error"><ul class="errorlist">
+ <li>This field is required.</li></ul>
+ <label class="required" for="id_age">Age:</label>
+ <input type="number" name="age" id="id_age" required></li>""",
)
self.assertHTMLEqual(
p.as_p(),
- """<ul class="errorlist"><li>This field is required.</li></ul>
-<p class="required error"><label class="required" for="id_name">Name:</label>
-<input type="text" name="name" id="id_name" required></p>
-<p class="required"><label class="required" for="id_is_cool">Is cool:</label>
-<select name="is_cool" id="id_is_cool">
-<option value="unknown" selected>Unknown</option>
-<option value="true">Yes</option>
-<option value="false">No</option>
-</select></p>
-<p><label for="id_email">Email:</label> <input type="email" name="email" id="id_email"></p>
-<ul class="errorlist"><li>This field is required.</li></ul>
-<p class="required error"><label class="required" for="id_age">Age:</label>
-<input type="number" name="age" id="id_age" required></p>""",
+ """
+ <ul class="errorlist"><li>This field is required.</li></ul>
+ <p class="required error">
+ <label class="required" for="id_name">Name:</label>
+ <input type="text" name="name" id="id_name" required></p>
+ <p class="required">
+ <label class="required" for="id_is_cool">Is cool:</label>
+ <select name="is_cool" id="id_is_cool">
+ <option value="unknown" selected>Unknown</option>
+ <option value="true">Yes</option>
+ <option value="false">No</option>
+ </select></p>
+ <p><label for="id_email">Email:</label>
+ <input type="email" name="email" id="id_email"></p>
+ <ul class="errorlist"><li>This field is required.</li></ul>
+ <p class="required error"><label class="required" for="id_age">Age:</label>
+ <input type="number" name="age" id="id_age" required></p>
+ """,
)
self.assertHTMLEqual(
@@ -3481,10 +3688,14 @@ Password: <input type="password" name="password" required>
self.assertHTMLEqual(
form.as_p(),
"""
- <p>Phone1:<input type="text" name="phone1_0" required><input type="text" name="phone1_1" required></p>
- <p>Phone2:<input type="text" name="phone2_0"><input type="text" name="phone2_1"></p>
- <p>Phone3:<input type="text" name="phone3_0" required><input type="text" name="phone3_1"></p>
- <p>Phone4:<input type="text" name="phone4_0"><input type="text" name="phone4_1"></p>
+ <p>Phone1:<input type="text" name="phone1_0" required>
+ <input type="text" name="phone1_1" required></p>
+ <p>Phone2:<input type="text" name="phone2_0">
+ <input type="text" name="phone2_1"></p>
+ <p>Phone3:<input type="text" name="phone3_0" required>
+ <input type="text" name="phone3_1"></p>
+ <p>Phone4:<input type="text" name="phone4_0">
+ <input type="text" name="phone4_1"></p>
""",
)
@@ -3694,7 +3905,8 @@ Password: <input type="password" name="password" required>
control = [
'<li>foo<ul class="errorlist"><li>This field is required.</li></ul></li>',
'<li>bar<ul class="errorlist"><li>This field is required.</li></ul></li>',
- '<li>__all__<ul class="errorlist nonfield"><li>Non-field error.</li></ul></li>',
+ '<li>__all__<ul class="errorlist nonfield"><li>Non-field error.</li></ul>'
+ "</li>",
]
for error in control:
self.assertInHTML(error, errors)
@@ -3798,10 +4010,14 @@ Password: <input type="password" name="password" required>
)
self.assertHTMLEqual(
p.as_p(),
- """<ul class="errorlist nonfield"><li>(Hidden field last_name) This field is required.</li></ul>
-<p><label for="id_first_name">First name:</label>
-<input id="id_first_name" name="first_name" type="text" value="John" required>
-<input id="id_last_name" name="last_name" type="hidden"></p>""",
+ """
+ <ul class="errorlist nonfield">
+ <li>(Hidden field last_name) This field is required.</li></ul>
+ <p><label for="id_first_name">First name:</label>
+ <input id="id_first_name" name="first_name" type="text" value="John"
+ required>
+ <input id="id_last_name" name="last_name" type="hidden"></p>
+ """,
)
self.assertHTMLEqual(
p.as_table(),
@@ -3847,11 +4063,18 @@ Password: <input type="password" name="password" required>
)
self.assertHTMLEqual(
p.as_table(),
- """<tr><td colspan="2"><ul class="errorlist nonfield"><li>Generic validation error</li></ul></td></tr>
-<tr><th><label for="id_first_name">First name:</label></th><td>
-<input id="id_first_name" name="first_name" type="text" value="John" required></td></tr>
-<tr><th><label for="id_last_name">Last name:</label></th><td>
-<input id="id_last_name" name="last_name" type="text" value="Lennon" required></td></tr>""",
+ """
+ <tr><td colspan="2"><ul class="errorlist nonfield">
+ <li>Generic validation error</li></ul></td></tr>
+ <tr><th><label for="id_first_name">First name:</label></th><td>
+ <input id="id_first_name" name="first_name" type="text" value="John"
+ required>
+ </td></tr>
+ <tr><th><label for="id_last_name">Last name:</label></th><td>
+ <input id="id_last_name" name="last_name" type="text" value="Lennon"
+ required>
+ </td></tr>
+ """,
)
def test_error_escaping(self):
@@ -3868,7 +4091,8 @@ Password: <input type="password" name="password" required>
form.is_valid()
self.assertHTMLEqual(
form.as_ul(),
- '<li><ul class="errorlist nonfield"><li>(Hidden field hidden) Foo &amp; &quot;bar&quot;!</li></ul></li>'
+ '<li><ul class="errorlist nonfield">'
+ "<li>(Hidden field hidden) Foo &amp; &quot;bar&quot;!</li></ul></li>"
'<li><ul class="errorlist"><li>Foo &amp; &quot;bar&quot;!</li></ul>'
'<label for="id_visible">Visible:</label> '
'<input type="text" name="visible" value="b" id="id_visible" required>'
@@ -3883,14 +4107,16 @@ Password: <input type="password" name="password" required>
p = Person()
self.assertEqual(
repr(p),
- "<Person bound=False, valid=Unknown, fields=(first_name;last_name;birthday)>",
+ "<Person bound=False, valid=Unknown, "
+ "fields=(first_name;last_name;birthday)>",
)
p = Person(
{"first_name": "John", "last_name": "Lennon", "birthday": "1940-10-9"}
)
self.assertEqual(
repr(p),
- "<Person bound=True, valid=Unknown, fields=(first_name;last_name;birthday)>",
+ "<Person bound=True, valid=Unknown, "
+ "fields=(first_name;last_name;birthday)>",
)
p.is_valid()
self.assertEqual(
@@ -4003,9 +4229,12 @@ Password: <input type="password" name="password" required>
form = MyForm()
self.assertHTMLEqual(
form.as_p(),
- '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" required></p>'
- '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></p>'
- '<p><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10" required>'
+ '<p><label for="id_f1">F1:</label>'
+ '<input id="id_f1" maxlength="30" name="f1" type="text" required></p>'
+ '<p><label for="id_f2">F2:</label>'
+ '<input id="id_f2" maxlength="30" name="f2" type="text"></p>'
+ '<p><label for="id_f3">F3:</label>'
+ '<textarea cols="40" id="id_f3" name="f3" rows="10" required>'
"</textarea></p>"
'<p><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
'<option value="P">Python</option>'
@@ -4016,8 +4245,10 @@ Password: <input type="password" name="password" required>
form.as_ul(),
'<li><label for="id_f1">F1:</label> '
'<input id="id_f1" maxlength="30" name="f1" type="text" required></li>'
- '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></li>'
- '<li><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10" required>'
+ '<li><label for="id_f2">F2:</label>'
+ '<input id="id_f2" maxlength="30" name="f2" type="text"></li>'
+ '<li><label for="id_f3">F3:</label>'
+ '<textarea cols="40" id="id_f3" name="f3" rows="10" required>'
"</textarea></li>"
'<li><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
'<option value="P">Python</option>'
@@ -4027,13 +4258,15 @@ Password: <input type="password" name="password" required>
self.assertHTMLEqual(
form.as_table(),
'<tr><th><label for="id_f1">F1:</label></th>'
- '<td><input id="id_f1" maxlength="30" name="f1" type="text" required></td></tr>'
+ '<td><input id="id_f1" maxlength="30" name="f1" type="text" required>'
+ "</td></tr>"
'<tr><th><label for="id_f2">F2:</label></th>'
'<td><input id="id_f2" maxlength="30" name="f2" type="text"></td></tr>'
'<tr><th><label for="id_f3">F3:</label></th>'
'<td><textarea cols="40" id="id_f3" name="f3" rows="10" required>'
"</textarea></td></tr>"
- '<tr><th><label for="id_f4">F4:</label></th><td><select id="id_f4" name="f4">'
+ '<tr><th><label for="id_f4">F4:</label></th><td>'
+ '<select id="id_f4" name="f4">'
'<option value="P">Python</option>'
'<option value="J">Java</option>'
"</select></td></tr>",
@@ -4050,10 +4283,12 @@ Password: <input type="password" name="password" required>
form = MyForm()
self.assertHTMLEqual(
form.as_p(),
- '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text"></p>'
- '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></p>'
- '<p><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10">'
- "</textarea></p>"
+ '<p><label for="id_f1">F1:</label>'
+ '<input id="id_f1" maxlength="30" name="f1" type="text"></p>'
+ '<p><label for="id_f2">F2:</label>'
+ '<input id="id_f2" maxlength="30" name="f2" type="text"></p>'
+ '<p><label for="id_f3">F3:</label>'
+ '<textarea cols="40" id="id_f3" name="f3" rows="10"></textarea></p>'
'<p><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
'<option value="P">Python</option>'
'<option value="J">Java</option>'
@@ -4061,10 +4296,12 @@ Password: <input type="password" name="password" required>
)
self.assertHTMLEqual(
form.as_ul(),
- '<li><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text"></li>'
- '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></li>'
- '<li><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10">'
- "</textarea></li>"
+ '<li><label for="id_f1">F1:</label>'
+ '<input id="id_f1" maxlength="30" name="f1" type="text"></li>'
+ '<li><label for="id_f2">F2:</label>'
+ '<input id="id_f2" maxlength="30" name="f2" type="text"></li>'
+ '<li><label for="id_f3">F3:</label>'
+ '<textarea cols="40" id="id_f3" name="f3" rows="10"></textarea></li>'
'<li><label for="id_f4">F4:</label> <select id="id_f4" name="f4">'
'<option value="P">Python</option>'
'<option value="J">Java</option>'
@@ -4076,9 +4313,11 @@ Password: <input type="password" name="password" required>
'<td><input id="id_f1" maxlength="30" name="f1" type="text"></td></tr>'
'<tr><th><label for="id_f2">F2:</label></th>'
'<td><input id="id_f2" maxlength="30" name="f2" type="text"></td></tr>'
- '<tr><th><label for="id_f3">F3:</label></th><td><textarea cols="40" id="id_f3" name="f3" rows="10">'
+ '<tr><th><label for="id_f3">F3:</label></th><td>'
+ '<textarea cols="40" id="id_f3" name="f3" rows="10">'
"</textarea></td></tr>"
- '<tr><th><label for="id_f4">F4:</label></th><td><select id="id_f4" name="f4">'
+ '<tr><th><label for="id_f4">F4:</label></th><td>'
+ '<select id="id_f4" name="f4">'
'<option value="P">Python</option>'
'<option value="J">Java</option>'
"</select></td></tr>",
diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py
index 9846cb5874..87084102a5 100644
--- a/tests/forms_tests/tests/test_formsets.py
+++ b/tests/forms_tests/tests/test_formsets.py
@@ -657,7 +657,8 @@ class FormsFormsetTestCase(SimpleTestCase):
def test_formsets_with_ordering(self):
"""
formset_factory's can_order argument adds an integer field to each
- form. When form validation succeeds, [form.cleaned_data for form in formset.forms]
+ form. When form validation succeeds,
+ [form.cleaned_data for form in formset.forms]
will have the data in the correct order specified by the ordering
fields. If a number is duplicated in the set of ordering fields, for
instance form 0 and form 3 are both marked as 1, then the form index
@@ -959,10 +960,13 @@ class FormsFormsetTestCase(SimpleTestCase):
formset = LimitedFavoriteDrinkFormSet(initial=[{"name": "Fernet and Coke"}])
self.assertHTMLEqual(
"\n".join(str(form) for form in formset.forms),
- """<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input type="text" name="form-0-name" value="Fernet and Coke" id="id_form-0-name"></td></tr>
-<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""",
+ """
+ <tr><th><label for="id_form-0-name">Name:</label></th>
+ <td><input type="text" name="form-0-name" value="Fernet and Coke"
+ id="id_form-0-name"></td></tr>
+ <tr><th><label for="id_form-1-name">Name:</label></th>
+ <td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>
+ """,
)
def test_max_num_zero(self):
@@ -988,10 +992,14 @@ class FormsFormsetTestCase(SimpleTestCase):
formset = LimitedFavoriteDrinkFormSet(initial=initial)
self.assertHTMLEqual(
"\n".join(str(form) for form in formset.forms),
- """<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input id="id_form-0-name" name="form-0-name" type="text" value="Fernet and Coke"></td></tr>
-<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr>""",
+ """
+ <tr><th><label for="id_form-0-name">Name:</label></th>
+ <td><input id="id_form-0-name" name="form-0-name" type="text"
+ value="Fernet and Coke"></td></tr>
+ <tr><th><label for="id_form-1-name">Name:</label></th>
+ <td><input id="id_form-1-name" name="form-1-name" type="text"
+ value="Bloody Mary"></td></tr>
+ """,
)
def test_more_initial_than_max_num(self):
@@ -1010,12 +1018,20 @@ class FormsFormsetTestCase(SimpleTestCase):
formset = LimitedFavoriteDrinkFormSet(initial=initial)
self.assertHTMLEqual(
"\n".join(str(form) for form in formset.forms),
- """<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic"></td></tr>
-<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr>
-<tr><th><label for="id_form-2-name">Name:</label></th>
-<td><input id="id_form-2-name" name="form-2-name" type="text" value="Jack and Coke"></td></tr>""",
+ """
+ <tr><th><label for="id_form-0-name">Name:</label></th>
+ <td>
+ <input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic">
+ </td></tr>
+ <tr><th><label for="id_form-1-name">Name:</label></th>
+ <td>
+ <input id="id_form-1-name" name="form-1-name" type="text"
+ value="Bloody Mary"></td></tr>
+ <tr><th><label for="id_form-2-name">Name:</label></th>
+ <td>
+ <input id="id_form-2-name" name="form-2-name" type="text"
+ value="Jack and Coke"></td></tr>
+ """,
)
def test_default_absolute_max(self):
@@ -1093,10 +1109,13 @@ class FormsFormsetTestCase(SimpleTestCase):
formset = LimitedFavoriteDrinkFormSet(initial=[{"name": "Gin Tonic"}])
self.assertHTMLEqual(
"\n".join(str(form) for form in formset.forms),
- """<tr><th><label for="id_form-0-name">Name:</label></th>
-<td><input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name"></td></tr>
-<tr><th><label for="id_form-1-name">Name:</label></th>
-<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""",
+ """
+ <tr><th><label for="id_form-0-name">Name:</label></th>
+ <td>
+ <input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name">
+ </td></tr>
+ <tr><th><label for="id_form-1-name">Name:</label></th>
+ <td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""",
)
def test_management_form_field_names(self):
@@ -1539,7 +1558,8 @@ class FormsetAsTagTests(SimpleTestCase):
self.formset.as_p(),
self.management_form_html
+ (
- '<p>Choice: <input type="text" name="choices-0-choice" value="Calexico"></p>'
+ "<p>Choice: "
+ '<input type="text" name="choices-0-choice" value="Calexico"></p>'
'<p>Votes: <input type="number" name="choices-0-votes" value="100"></p>'
),
)
@@ -1549,8 +1569,10 @@ class FormsetAsTagTests(SimpleTestCase):
self.formset.as_ul(),
self.management_form_html
+ (
- '<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li>'
- '<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>'
+ "<li>Choice: "
+ '<input type="text" name="choices-0-choice" value="Calexico"></li>'
+ "<li>Votes: "
+ '<input type="number" name="choices-0-votes" value="100"></li>'
),
)
@@ -1620,8 +1642,10 @@ class TestIsBoundBehavior(SimpleTestCase):
"<li>(Hidden field TOTAL_FORMS) Enter a whole number.</li>"
"<li>(Hidden field INITIAL_FORMS) Enter a whole number.</li>"
"</ul>"
- '<input type="hidden" name="form-TOTAL_FORMS" value="two" id="id_form-TOTAL_FORMS">'
- '<input type="hidden" name="form-INITIAL_FORMS" value="one" id="id_form-INITIAL_FORMS">'
+ '<input type="hidden" name="form-TOTAL_FORMS" value="two" '
+ 'id="id_form-TOTAL_FORMS">'
+ '<input type="hidden" name="form-INITIAL_FORMS" value="one" '
+ 'id="id_form-INITIAL_FORMS">'
'<input type="hidden" name="form-MIN_NUM_FORMS" id="id_form-MIN_NUM_FORMS">'
'<input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS">'
"</td></tr>\n",
diff --git a/tests/forms_tests/tests/test_i18n.py b/tests/forms_tests/tests/test_i18n.py
index 777c84e4e4..2548ceb481 100644
--- a/tests/forms_tests/tests/test_i18n.py
+++ b/tests/forms_tests/tests/test_i18n.py
@@ -23,21 +23,25 @@ class FormsI18nTests(SimpleTestCase):
self.assertHTMLEqual(
f.as_p(),
'<p><label for="id_username">username:</label>'
- '<input id="id_username" type="text" name="username" maxlength="10" required></p>',
+ '<input id="id_username" type="text" name="username" maxlength="10" '
+ "required></p>",
)
- # Translations are done at rendering time, so multi-lingual apps can define forms)
+ # Translations are done at rendering time, so multi-lingual apps can
+ # define forms.
with translation.override("de"):
self.assertHTMLEqual(
f.as_p(),
'<p><label for="id_username">Benutzername:</label>'
- '<input id="id_username" type="text" name="username" maxlength="10" required></p>',
+ '<input id="id_username" type="text" name="username" maxlength="10" '
+ "required></p>",
)
with translation.override("pl"):
self.assertHTMLEqual(
f.as_p(),
'<p><label for="id_username">nazwa u\u017cytkownika:</label>'
- '<input id="id_username" type="text" name="username" maxlength="10" required></p>',
+ '<input id="id_username" type="text" name="username" maxlength="10" '
+ "required></p>",
)
def test_non_ascii_label(self):
@@ -79,13 +83,13 @@ class FormsI18nTests(SimpleTestCase):
"<p><label>\xc5\xf8\xdf:</label>"
'<div id="id_somechoice">\n'
'<div><label for="id_somechoice_0">'
- '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required> '
- "En tied\xe4</label></div>\n"
+ '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" '
+ "required> En tied\xe4</label></div>\n"
'<div><label for="id_somechoice_1">'
- '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required> '
- 'Mies</label></div>\n<div><label for="id_somechoice_2">'
- '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required> '
- "Nainen</label></div>\n</div></p>",
+ '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" '
+ 'required> Mies</label></div>\n<div><label for="id_somechoice_2">'
+ '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" '
+ "required> Nainen</label></div>\n</div></p>",
)
# Translated error messages
@@ -98,13 +102,14 @@ class FormsI18nTests(SimpleTestCase):
"\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.</li></ul>\n"
"<p><label>\xc5\xf8\xdf:</label>"
' <div id="id_somechoice">\n<div><label for="id_somechoice_0">'
- '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required> '
- "En tied\xe4</label></div>\n"
+ '<input type="radio" id="id_somechoice_0" value="\xc5" '
+ 'name="somechoice" required> En tied\xe4</label></div>\n'
'<div><label for="id_somechoice_1">'
- '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required> '
- 'Mies</label></div>\n<div><label for="id_somechoice_2">'
- '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required> '
- "Nainen</label></div>\n</div></p>",
+ '<input type="radio" id="id_somechoice_1" value="\xf8" '
+ 'name="somechoice" required> Mies</label></div>\n<div>'
+ '<label for="id_somechoice_2">'
+ '<input type="radio" id="id_somechoice_2" value="\xdf" '
+ 'name="somechoice" required> Nainen</label></div>\n</div></p>',
)
def test_select_translated_text(self):
diff --git a/tests/forms_tests/tests/test_input_formats.py b/tests/forms_tests/tests/test_input_formats.py
index 3ac28b1b30..cd3817d421 100644
--- a/tests/forms_tests/tests/test_input_formats.py
+++ b/tests/forms_tests/tests/test_input_formats.py
@@ -92,7 +92,10 @@ class LocalizedTimeTests(SimpleTestCase):
self.assertEqual(text, "13:30:00")
def test_localized_timeField_with_inputformat(self):
- "Localized TimeFields with manually specified input formats can accept those formats"
+ """
+ Localized TimeFields with manually specified input formats can accept
+ those formats.
+ """
f = forms.TimeField(input_formats=["%H.%M.%S", "%H.%M"], localize=True)
# Parse a time in an unaccepted format; get an error
with self.assertRaises(ValidationError):
@@ -192,7 +195,10 @@ class CustomTimeInputFormatsTests(SimpleTestCase):
self.assertEqual(text, "01:30:00 PM")
def test_localized_timeField_with_inputformat(self):
- "Localized TimeFields with manually specified input formats can accept those formats"
+ """
+ Localized TimeFields with manually specified input formats can accept
+ those formats.
+ """
f = forms.TimeField(input_formats=["%H.%M.%S", "%H.%M"], localize=True)
# Parse a time in an unaccepted format; get an error
with self.assertRaises(ValidationError):
@@ -288,7 +294,10 @@ class SimpleTimeFormatTests(SimpleTestCase):
self.assertEqual(text, "13:30:00")
def test_localized_timeField_with_inputformat(self):
- "Localized TimeFields with manually specified input formats can accept those formats"
+ """
+ Localized TimeFields with manually specified input formats can accept
+ those formats.
+ """
f = forms.TimeField(input_formats=["%I:%M:%S %p", "%I:%M %p"], localize=True)
# Parse a time in an unaccepted format; get an error
with self.assertRaises(ValidationError):
@@ -395,7 +404,10 @@ class LocalizedDateTests(SimpleTestCase):
self.assertEqual(text, "21.12.2010")
def test_localized_dateField_with_inputformat(self):
- "Localized DateFields with manually specified input formats can accept those formats"
+ """
+ Localized DateFields with manually specified input formats can accept
+ those formats.
+ """
f = forms.DateField(input_formats=["%m.%d.%Y", "%m-%d-%Y"], localize=True)
# Parse a date in an unaccepted format; get an error
with self.assertRaises(ValidationError):
@@ -497,7 +509,10 @@ class CustomDateInputFormatsTests(SimpleTestCase):
self.assertEqual(text, "21.12.2010")
def test_localized_dateField_with_inputformat(self):
- "Localized DateFields with manually specified input formats can accept those formats"
+ """
+ Localized DateFields with manually specified input formats can accept
+ those formats.
+ """
f = forms.DateField(input_formats=["%m.%d.%Y", "%m-%d-%Y"], localize=True)
# Parse a date in an unaccepted format; get an error
with self.assertRaises(ValidationError):
@@ -593,7 +608,10 @@ class SimpleDateFormatTests(SimpleTestCase):
self.assertEqual(text, "2010-12-21")
def test_localized_dateField_with_inputformat(self):
- "Localized DateFields with manually specified input formats can accept those formats"
+ """
+ Localized DateFields with manually specified input formats can accept
+ those formats.
+ """
f = forms.DateField(input_formats=["%d.%m.%Y", "%d-%m-%Y"], localize=True)
# Parse a date in an unaccepted format; get an error
with self.assertRaises(ValidationError):
@@ -702,7 +720,10 @@ class LocalizedDateTimeTests(SimpleTestCase):
self.assertEqual(text, "21.12.2010 13:30:00")
def test_localized_dateTimeField_with_inputformat(self):
- "Localized DateTimeFields with manually specified input formats can accept those formats"
+ """
+ Localized DateTimeFields with manually specified input formats can
+ accept those formats.
+ """
f = forms.DateTimeField(
input_formats=["%H.%M.%S %m.%d.%Y", "%H.%M %m-%d-%Y"], localize=True
)
@@ -810,7 +831,10 @@ class CustomDateTimeInputFormatsTests(SimpleTestCase):
self.assertEqual(text, "01:30:00 PM 21/12/2010")
def test_localized_dateTimeField_with_inputformat(self):
- "Localized DateTimeFields with manually specified input formats can accept those formats"
+ """
+ Localized DateTimeFields with manually specified input formats can
+ accept those formats.
+ """
f = forms.DateTimeField(
input_formats=["%m.%d.%Y %H:%M:%S", "%m-%d-%Y %H:%M"], localize=True
)
@@ -862,7 +886,10 @@ class SimpleDateTimeFormatTests(SimpleTestCase):
self.assertEqual(text, "2010-12-21 13:30:05")
def test_localized_dateTimeField(self):
- "Localized DateTimeFields in a non-localized environment act as unlocalized widgets"
+ """
+ Localized DateTimeFields in a non-localized environment act as
+ unlocalized widgets.
+ """
f = forms.DateTimeField()
# Parse a date in an unaccepted format; get an error
with self.assertRaises(ValidationError):
@@ -910,7 +937,10 @@ class SimpleDateTimeFormatTests(SimpleTestCase):
self.assertEqual(text, "2010-12-21 13:30:00")
def test_localized_dateTimeField_with_inputformat(self):
- "Localized DateTimeFields with manually specified input formats can accept those formats"
+ """
+ Localized DateTimeFields with manually specified input formats can
+ accept those formats.
+ """
f = forms.DateTimeField(
input_formats=["%I:%M:%S %p %d.%m.%Y", "%I:%M %p %d-%m-%Y"], localize=True
)
diff --git a/tests/forms_tests/tests/test_media.py b/tests/forms_tests/tests/test_media.py
index 59fd74f4c9..4338321af8 100644
--- a/tests/forms_tests/tests/test_media.py
+++ b/tests/forms_tests/tests/test_media.py
@@ -21,16 +21,18 @@ class FormsMediaTestCase(SimpleTestCase):
)
self.assertEqual(
str(m),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
self.assertEqual(
repr(m),
"Media(css={'all': ['path/to/css1', '/path/to/css2']}, "
- "js=['/path/to/js1', 'http://media.other.com/path/to/js2', 'https://secure.other.com/path/to/js3'])",
+ "js=['/path/to/js1', 'http://media.other.com/path/to/js2', "
+ "'https://secure.other.com/path/to/js3'])",
)
class Foo:
@@ -44,11 +46,12 @@ class FormsMediaTestCase(SimpleTestCase):
m3 = Media(Foo)
self.assertEqual(
str(m3),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
# A widget can exist without a media definition
@@ -78,18 +81,20 @@ class FormsMediaTestCase(SimpleTestCase):
w1 = MyWidget1()
self.assertEqual(
str(w1.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
# Media objects can be interrogated by media type
self.assertEqual(
str(w1.media["css"]),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">',
)
self.assertEqual(
@@ -126,23 +131,25 @@ class FormsMediaTestCase(SimpleTestCase):
w3 = MyWidget3()
self.assertEqual(
str(w1.media + w2.media + w3.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<link href="/path/to/css3" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="/path/to/js4"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css3" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="/path/to/js4"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
# media addition hasn't affected the original objects
self.assertEqual(
str(w1.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
# Regression check for #12879: specifying the same CSS or JS file
@@ -234,13 +241,14 @@ class FormsMediaTestCase(SimpleTestCase):
w6 = MyWidget6()
self.assertEqual(
str(w6.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/other/path" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="/other/js"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/other/path" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="/other/js"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
def test_media_inheritance(self):
@@ -248,7 +256,8 @@ class FormsMediaTestCase(SimpleTestCase):
# Inheritance of media
###############################################################
- # If a widget extends another but provides no media definition, it inherits the parent widget's media
+ # If a widget extends another but provides no media definition, it
+ # inherits the parent widget's media.
class MyWidget1(TextInput):
class Media:
css = {"all": ("path/to/css1", "/path/to/css2")}
@@ -264,14 +273,16 @@ class FormsMediaTestCase(SimpleTestCase):
w7 = MyWidget7()
self.assertEqual(
str(w7.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
- # If a widget extends another but defines media, it extends the parent widget's media by default
+ # If a widget extends another but defines media, it extends the parent
+ # widget's media by default.
class MyWidget8(MyWidget1):
class Media:
css = {"all": ("/path/to/css3", "path/to/css1")}
@@ -290,8 +301,8 @@ class FormsMediaTestCase(SimpleTestCase):
)
def test_media_inheritance_from_property(self):
- # If a widget extends another but defines media, it extends the parents widget's media,
- # even if the parent defined media using a property.
+ # If a widget extends another but defines media, it extends the parents
+ # widget's media, even if the parent defined media using a property.
class MyWidget1(TextInput):
class Media:
css = {"all": ("path/to/css1", "/path/to/css2")}
@@ -338,7 +349,8 @@ class FormsMediaTestCase(SimpleTestCase):
)
def test_media_inheritance_extends(self):
- # A widget can explicitly enable full media inheritance by specifying 'extend=True'
+ # A widget can explicitly enable full media inheritance by specifying
+ # 'extend=True'.
class MyWidget1(TextInput):
class Media:
css = {"all": ("path/to/css1", "/path/to/css2")}
@@ -367,7 +379,8 @@ class FormsMediaTestCase(SimpleTestCase):
)
def test_media_inheritance_single_type(self):
- # A widget can enable inheritance of one media type by specifying extend as a tuple
+ # A widget can enable inheritance of one media type by specifying
+ # extend as a tuple.
class MyWidget1(TextInput):
class Media:
css = {"all": ("path/to/css1", "/path/to/css2")}
@@ -453,13 +466,14 @@ class FormsMediaTestCase(SimpleTestCase):
mymulti = MyMultiWidget()
self.assertEqual(
str(mymulti.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<link href="/path/to/css3" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="/path/to/js4"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css3" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="/path/to/js4"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
def test_form_media(self):
@@ -494,13 +508,14 @@ class FormsMediaTestCase(SimpleTestCase):
f1 = MyForm()
self.assertEqual(
str(f1.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<link href="/path/to/css3" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="/path/to/js4"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css3" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="/path/to/js4"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
# Form media can be combined to produce a single media definition.
@@ -510,13 +525,14 @@ class FormsMediaTestCase(SimpleTestCase):
f2 = AnotherForm()
self.assertEqual(
str(f1.media + f2.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<link href="/path/to/css3" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="/path/to/js4"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css3" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="/path/to/js4"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
# Forms can also define media, following the same rules as widgets.
@@ -531,15 +547,16 @@ class FormsMediaTestCase(SimpleTestCase):
f3 = FormWithMedia()
self.assertEqual(
str(f3.media),
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/some/form/css" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<link href="/path/to/css3" media="all" rel="stylesheet">
-<script src="/path/to/js1"></script>
-<script src="/some/form/javascript"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="/path/to/js4"></script>
-<script src="https://secure.other.com/path/to/js3"></script>""",
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/some/form/css" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css3" media="all" rel="stylesheet">\n'
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="/some/form/javascript"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="/path/to/js4"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>',
)
# Media works in templates
@@ -547,15 +564,16 @@ class FormsMediaTestCase(SimpleTestCase):
Template("{{ form.media.js }}{{ form.media.css }}").render(
Context({"form": f3})
),
- """<script src="/path/to/js1"></script>
-<script src="/some/form/javascript"></script>
-<script src="http://media.other.com/path/to/js2"></script>
-<script src="/path/to/js4"></script>
-<script src="https://secure.other.com/path/to/js3"></script>"""
- """<link href="http://media.example.com/static/path/to/css1" media="all" rel="stylesheet">
-<link href="/some/form/css" media="all" rel="stylesheet">
-<link href="/path/to/css2" media="all" rel="stylesheet">
-<link href="/path/to/css3" media="all" rel="stylesheet">""",
+ '<script src="/path/to/js1"></script>\n'
+ '<script src="/some/form/javascript"></script>\n'
+ '<script src="http://media.other.com/path/to/js2"></script>\n'
+ '<script src="/path/to/js4"></script>\n'
+ '<script src="https://secure.other.com/path/to/js3"></script>'
+ '<link href="http://media.example.com/static/path/to/css1" media="all" '
+ 'rel="stylesheet">\n'
+ '<link href="/some/form/css" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css2" media="all" rel="stylesheet">\n'
+ '<link href="/path/to/css3" media="all" rel="stylesheet">',
)
def test_html_safe(self):
diff --git a/tests/forms_tests/tests/test_utils.py b/tests/forms_tests/tests/test_utils.py
index c4a2e5c651..a921a924b6 100644
--- a/tests/forms_tests/tests/test_utils.py
+++ b/tests/forms_tests/tests/test_utils.py
@@ -134,7 +134,8 @@ class FormsUtilsTestCase(SimpleTestCase):
self.assertHTMLEqual(
str(ErrorList([example])),
'<ul class="errorlist"><li>Example of link: '
- "&lt;a href=&quot;http://www.example.com/&quot;&gt;example&lt;/a&gt;</li></ul>",
+ "&lt;a href=&quot;http://www.example.com/&quot;&gt;example&lt;/a&gt;"
+ "</li></ul>",
)
self.assertHTMLEqual(
str(ErrorList([mark_safe(example)])),
@@ -144,7 +145,8 @@ class FormsUtilsTestCase(SimpleTestCase):
self.assertHTMLEqual(
str(ErrorDict({"name": example})),
'<ul class="errorlist"><li>nameExample of link: '
- "&lt;a href=&quot;http://www.example.com/&quot;&gt;example&lt;/a&gt;</li></ul>",
+ "&lt;a href=&quot;http://www.example.com/&quot;&gt;example&lt;/a&gt;"
+ "</li></ul>",
)
self.assertHTMLEqual(
str(ErrorDict({"name": mark_safe(example)})),
diff --git a/tests/forms_tests/tests/tests.py b/tests/forms_tests/tests/tests.py
index 5a860037e5..aba405db15 100644
--- a/tests/forms_tests/tests/tests.py
+++ b/tests/forms_tests/tests/tests.py
@@ -66,7 +66,10 @@ class TestTicket14567(TestCase):
"""
def test_empty_queryset_return(self):
- "If a model's ManyToManyField has blank=True and is saved with no data, a queryset is returned."
+ """
+ If a model's ManyToManyField has blank=True and is saved with no data,
+ a queryset is returned.
+ """
option = ChoiceOptionModel.objects.create(name="default")
form = OptionalMultiChoiceModelForm(
{"multi_choice_optional": "", "multi_choice": [option.pk]}
@@ -82,7 +85,10 @@ class TestTicket14567(TestCase):
class ModelFormCallableModelDefault(TestCase):
def test_no_empty_option(self):
- "If a model's ForeignKey has blank=False and a default, no empty option is created (Refs #10792)."
+ """
+ If a model's ForeignKey has blank=False and a default, no empty option
+ is created.
+ """
option = ChoiceOptionModel.objects.create(name="default")
choices = list(ChoiceFieldForm().fields["choice"].choices)
@@ -90,34 +96,52 @@ class ModelFormCallableModelDefault(TestCase):
self.assertEqual(choices[0], (option.pk, str(option)))
def test_callable_initial_value(self):
- "The initial value for a callable default returning a queryset is the pk (refs #13769)"
+ """
+ The initial value for a callable default returning a queryset is the
+ pk.
+ """
ChoiceOptionModel.objects.create(id=1, name="default")
ChoiceOptionModel.objects.create(id=2, name="option 2")
ChoiceOptionModel.objects.create(id=3, name="option 3")
self.assertHTMLEqual(
ChoiceFieldForm().as_p(),
- """<p><label for="id_choice">Choice:</label> <select name="choice" id="id_choice">
-<option value="1" selected>ChoiceOption 1</option>
-<option value="2">ChoiceOption 2</option>
-<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice" value="1" id="initial-id_choice"></p>
-<p><label for="id_choice_int">Choice int:</label> <select name="choice_int" id="id_choice_int">
-<option value="1" selected>ChoiceOption 1</option>
-<option value="2">ChoiceOption 2</option>
-<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice_int" value="1" id="initial-id_choice_int"></p>
-<p><label for="id_multi_choice">Multi choice:</label>
-<select multiple name="multi_choice" id="id_multi_choice" required>
-<option value="1" selected>ChoiceOption 1</option>
-<option value="2">ChoiceOption 2</option>
-<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice" value="1" id="initial-id_multi_choice_0"></p>
-<p><label for="id_multi_choice_int">Multi choice int:</label>
-<select multiple name="multi_choice_int" id="id_multi_choice_int" required>
-<option value="1" selected>ChoiceOption 1</option>
-<option value="2">ChoiceOption 2</option>
-<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice_int" value="1" id="initial-id_multi_choice_int_0"></p>""",
+ """
+ <p><label for="id_choice">Choice:</label>
+ <select name="choice" id="id_choice">
+ <option value="1" selected>ChoiceOption 1</option>
+ <option value="2">ChoiceOption 2</option>
+ <option value="3">ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-choice" value="1" id="initial-id_choice">
+ </p>
+ <p><label for="id_choice_int">Choice int:</label>
+ <select name="choice_int" id="id_choice_int">
+ <option value="1" selected>ChoiceOption 1</option>
+ <option value="2">ChoiceOption 2</option>
+ <option value="3">ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-choice_int" value="1"
+ id="initial-id_choice_int">
+ </p>
+ <p><label for="id_multi_choice">Multi choice:</label>
+ <select multiple name="multi_choice" id="id_multi_choice" required>
+ <option value="1" selected>ChoiceOption 1</option>
+ <option value="2">ChoiceOption 2</option>
+ <option value="3">ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-multi_choice" value="1"
+ id="initial-id_multi_choice_0">
+ </p>
+ <p><label for="id_multi_choice_int">Multi choice int:</label>
+ <select multiple name="multi_choice_int" id="id_multi_choice_int" required>
+ <option value="1" selected>ChoiceOption 1</option>
+ <option value="2">ChoiceOption 2</option>
+ <option value="3">ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-multi_choice_int" value="1"
+ id="initial-id_multi_choice_int_0">
+ </p>
+ """,
)
def test_initial_instance_value(self):
@@ -136,30 +160,47 @@ class ModelFormCallableModelDefault(TestCase):
),
}
).as_p(),
- """<p><label for="id_choice">Choice:</label> <select name="choice" id="id_choice">
-<option value="1">ChoiceOption 1</option>
-<option value="2" selected>ChoiceOption 2</option>
-<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice" value="2" id="initial-id_choice"></p>
-<p><label for="id_choice_int">Choice int:</label> <select name="choice_int" id="id_choice_int">
-<option value="1">ChoiceOption 1</option>
-<option value="2" selected>ChoiceOption 2</option>
-<option value="3">ChoiceOption 3</option>
-</select><input type="hidden" name="initial-choice_int" value="2" id="initial-id_choice_int"></p>
-<p><label for="id_multi_choice">Multi choice:</label>
-<select multiple name="multi_choice" id="id_multi_choice" required>
-<option value="1">ChoiceOption 1</option>
-<option value="2" selected>ChoiceOption 2</option>
-<option value="3" selected>ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice" value="2" id="initial-id_multi_choice_0">
-<input type="hidden" name="initial-multi_choice" value="3" id="initial-id_multi_choice_1"></p>
-<p><label for="id_multi_choice_int">Multi choice int:</label>
-<select multiple name="multi_choice_int" id="id_multi_choice_int" required>
-<option value="1">ChoiceOption 1</option>
-<option value="2" selected>ChoiceOption 2</option>
-<option value="3" selected>ChoiceOption 3</option>
-</select><input type="hidden" name="initial-multi_choice_int" value="2" id="initial-id_multi_choice_int_0">
-<input type="hidden" name="initial-multi_choice_int" value="3" id="initial-id_multi_choice_int_1"></p>""",
+ """
+ <p><label for="id_choice">Choice:</label>
+ <select name="choice" id="id_choice">
+ <option value="1">ChoiceOption 1</option>
+ <option value="2" selected>ChoiceOption 2</option>
+ <option value="3">ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-choice" value="2" id="initial-id_choice">
+ </p>
+ <p><label for="id_choice_int">Choice int:</label>
+ <select name="choice_int" id="id_choice_int">
+ <option value="1">ChoiceOption 1</option>
+ <option value="2" selected>ChoiceOption 2</option>
+ <option value="3">ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-choice_int" value="2"
+ id="initial-id_choice_int">
+ </p>
+ <p><label for="id_multi_choice">Multi choice:</label>
+ <select multiple name="multi_choice" id="id_multi_choice" required>
+ <option value="1">ChoiceOption 1</option>
+ <option value="2" selected>ChoiceOption 2</option>
+ <option value="3" selected>ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-multi_choice" value="2"
+ id="initial-id_multi_choice_0">
+ <input type="hidden" name="initial-multi_choice" value="3"
+ id="initial-id_multi_choice_1">
+ </p>
+ <p><label for="id_multi_choice_int">Multi choice int:</label>
+ <select multiple name="multi_choice_int" id="id_multi_choice_int" required>
+ <option value="1">ChoiceOption 1</option>
+ <option value="2" selected>ChoiceOption 2</option>
+ <option value="3" selected>ChoiceOption 3</option>
+ </select>
+ <input type="hidden" name="initial-multi_choice_int" value="2"
+ id="initial-id_multi_choice_int_0">
+ <input type="hidden" name="initial-multi_choice_int" value="3"
+ id="initial-id_multi_choice_int_1">
+ </p>
+ """,
)
@@ -194,9 +235,8 @@ class FormsModelTestCase(TestCase):
self.assertFalse(f.is_valid())
def test_formfield_initial(self):
- # Formfield initial values ########
- # If the model has default values for some fields, they are used as the formfield
- # initial values.
+ # If the model has default values for some fields, they are used as the
+ # formfield initial values.
class DefaultsForm(ModelForm):
class Meta:
model = Defaults
@@ -323,25 +363,32 @@ class EmptyLabelTestCase(TestCase):
f = EmptyCharLabelChoiceForm()
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p>
-<p><label for="id_choice">Choice:</label> <select id="id_choice" name="choice">
-<option value="" selected>No Preference</option>
-<option value="f">Foo</option>
-<option value="b">Bar</option>
-</select></p>""",
+ """
+ <p><label for="id_name">Name:</label>
+ <input id="id_name" maxlength="10" name="name" type="text" required></p>
+ <p><label for="id_choice">Choice:</label>
+ <select id="id_choice" name="choice">
+ <option value="" selected>No Preference</option>
+ <option value="f">Foo</option>
+ <option value="b">Bar</option>
+ </select></p>
+ """,
)
def test_empty_field_char_none(self):
f = EmptyCharLabelNoneChoiceForm()
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p>
-<p><label for="id_choice_string_w_none">Choice string w none:</label>
-<select id="id_choice_string_w_none" name="choice_string_w_none">
-<option value="" selected>No Preference</option>
-<option value="f">Foo</option>
-<option value="b">Bar</option>
-</select></p>""",
+ """
+ <p><label for="id_name">Name:</label>
+ <input id="id_name" maxlength="10" name="name" type="text" required></p>
+ <p><label for="id_choice_string_w_none">Choice string w none:</label>
+ <select id="id_choice_string_w_none" name="choice_string_w_none">
+ <option value="" selected>No Preference</option>
+ <option value="f">Foo</option>
+ <option value="b">Bar</option>
+ </select></p>
+ """,
)
def test_save_empty_label_forms(self):
@@ -367,13 +414,16 @@ class EmptyLabelTestCase(TestCase):
f = EmptyIntegerLabelChoiceForm()
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p>
-<p><label for="id_choice_integer">Choice integer:</label>
-<select id="id_choice_integer" name="choice_integer">
-<option value="" selected>No Preference</option>
-<option value="1">Foo</option>
-<option value="2">Bar</option>
-</select></p>""",
+ """
+ <p><label for="id_name">Name:</label>
+ <input id="id_name" maxlength="10" name="name" type="text" required></p>
+ <p><label for="id_choice_integer">Choice integer:</label>
+ <select id="id_choice_integer" name="choice_integer">
+ <option value="" selected>No Preference</option>
+ <option value="1">Foo</option>
+ <option value="2">Bar</option>
+ </select></p>
+ """,
)
def test_get_display_value_on_none(self):
@@ -386,28 +436,36 @@ class EmptyLabelTestCase(TestCase):
f = EmptyIntegerLabelChoiceForm(instance=none_model)
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label>
-<input id="id_name" maxlength="10" name="name" type="text" value="none-test" required></p>
-<p><label for="id_choice_integer">Choice integer:</label>
-<select id="id_choice_integer" name="choice_integer">
-<option value="" selected>No Preference</option>
-<option value="1">Foo</option>
-<option value="2">Bar</option>
-</select></p>""",
+ """
+ <p><label for="id_name">Name:</label>
+ <input id="id_name" maxlength="10" name="name" type="text"
+ value="none-test" required>
+ </p>
+ <p><label for="id_choice_integer">Choice integer:</label>
+ <select id="id_choice_integer" name="choice_integer">
+ <option value="" selected>No Preference</option>
+ <option value="1">Foo</option>
+ <option value="2">Bar</option>
+ </select></p>
+ """,
)
foo_model = ChoiceModel(name="foo-test", choice_integer=1)
f = EmptyIntegerLabelChoiceForm(instance=foo_model)
self.assertHTMLEqual(
f.as_p(),
- """<p><label for="id_name">Name:</label>
-<input id="id_name" maxlength="10" name="name" type="text" value="foo-test" required></p>
-<p><label for="id_choice_integer">Choice integer:</label>
-<select id="id_choice_integer" name="choice_integer">
-<option value="">No Preference</option>
-<option value="1" selected>Foo</option>
-<option value="2">Bar</option>
-</select></p>""",
+ """
+ <p><label for="id_name">Name:</label>
+ <input id="id_name" maxlength="10" name="name" type="text"
+ value="foo-test" required>
+ </p>
+ <p><label for="id_choice_integer">Choice integer:</label>
+ <select id="id_choice_integer" name="choice_integer">
+ <option value="">No Preference</option>
+ <option value="1" selected>Foo</option>
+ <option value="2">Bar</option>
+ </select></p>
+ """,
)
diff --git a/tests/forms_tests/widget_tests/test_checkboxinput.py b/tests/forms_tests/widget_tests/test_checkboxinput.py
index 0f65e876df..c30aadbbb1 100644
--- a/tests/forms_tests/widget_tests/test_checkboxinput.py
+++ b/tests/forms_tests/widget_tests/test_checkboxinput.py
@@ -86,7 +86,8 @@ class CheckboxInputTest(WidgetTest):
"greeting",
"hello & goodbye",
html=(
- '<input checked type="checkbox" name="greeting" value="hello &amp; goodbye">'
+ '<input checked type="checkbox" name="greeting" '
+ 'value="hello &amp; goodbye">'
),
)
diff --git a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
index 35db8192ef..89cd473638 100644
--- a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
+++ b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
@@ -17,10 +17,14 @@ class CheckboxSelectMultipleTest(WidgetTest):
["J"],
html="""
<div>
- <div><label><input checked type="checkbox" name="beatles" value="J"> John</label></div>
- <div><label><input type="checkbox" name="beatles" value="P"> Paul</label></div>
- <div><label><input type="checkbox" name="beatles" value="G"> George</label></div>
- <div><label><input type="checkbox" name="beatles" value="R"> Ringo</label></div>
+ <div><label><input checked type="checkbox" name="beatles" value="J"> John
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="P"> Paul
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="G"> George
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="R"> Ringo
+ </label></div>
</div>
""",
)
@@ -32,10 +36,14 @@ class CheckboxSelectMultipleTest(WidgetTest):
["J", "P"],
html="""
<div>
- <div><label><input checked type="checkbox" name="beatles" value="J"> John</label></div>
- <div><label><input checked type="checkbox" name="beatles" value="P"> Paul</label></div>
- <div><label><input type="checkbox" name="beatles" value="G"> George</label></div>
- <div><label><input type="checkbox" name="beatles" value="R"> Ringo</label></div>
+ <div><label><input checked type="checkbox" name="beatles" value="J"> John
+ </label></div>
+ <div><label><input checked type="checkbox" name="beatles" value="P"> Paul
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="G"> George
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="R"> Ringo
+ </label></div>
</div>
""",
)
@@ -51,11 +59,16 @@ class CheckboxSelectMultipleTest(WidgetTest):
None,
html="""
<div>
- <div><label><input type="checkbox" name="beatles" value=""> Unknown</label></div>
- <div><label><input type="checkbox" name="beatles" value="J"> John</label></div>
- <div><label><input type="checkbox" name="beatles" value="P"> Paul</label></div>
- <div><label><input type="checkbox" name="beatles" value="G"> George</label></div>
- <div><label><input type="checkbox" name="beatles" value="R"> Ringo</label></div>
+ <div><label><input type="checkbox" name="beatles" value=""> Unknown
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="J"> John
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="P"> Paul
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="G"> George
+ </label></div>
+ <div><label><input type="checkbox" name="beatles" value="R"> Ringo
+ </label></div>
</div>
""",
)
@@ -69,19 +82,24 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<div id="media">
<div> <label for="media_0">
- <input type="checkbox" name="nestchoice" value="unknown" id="media_0"> Unknown</label></div>
+ <input type="checkbox" name="nestchoice" value="unknown" id="media_0"> Unknown
+ </label></div>
<div>
<label>Audio</label>
<div> <label for="media_1_0">
- <input checked type="checkbox" name="nestchoice" value="vinyl" id="media_1_0"> Vinyl</label></div>
+ <input checked type="checkbox" name="nestchoice" value="vinyl" id="media_1_0">
+ Vinyl</label></div>
<div> <label for="media_1_1">
- <input type="checkbox" name="nestchoice" value="cd" id="media_1_1"> CD</label></div>
+ <input type="checkbox" name="nestchoice" value="cd" id="media_1_1"> CD
+ </label></div>
</div><div>
<label>Video</label>
<div> <label for="media_2_0">
- <input type="checkbox" name="nestchoice" value="vhs" id="media_2_0"> VHS</label></div>
+ <input type="checkbox" name="nestchoice" value="vhs" id="media_2_0"> VHS
+ </label></div>
<div> <label for="media_2_1">
- <input type="checkbox" name="nestchoice" value="dvd" id="media_2_1" checked> DVD</label></div>
+ <input type="checkbox" name="nestchoice" value="dvd" id="media_2_1" checked> DVD
+ </label></div>
</div>
</div>
"""
@@ -101,15 +119,21 @@ class CheckboxSelectMultipleTest(WidgetTest):
)
html = """
<div>
- <div> <label><input type="checkbox" name="nestchoice" value="unknown"> Unknown</label></div>
+ <div> <label>
+ <input type="checkbox" name="nestchoice" value="unknown"> Unknown</label></div>
<div>
<label>Audio</label>
- <div> <label><input checked type="checkbox" name="nestchoice" value="vinyl"> Vinyl</label></div>
- <div> <label><input type="checkbox" name="nestchoice" value="cd"> CD</label></div>
+ <div> <label>
+ <input checked type="checkbox" name="nestchoice" value="vinyl"> Vinyl
+ </label></div>
+ <div> <label>
+ <input type="checkbox" name="nestchoice" value="cd"> CD</label></div>
</div><div>
<label>Video</label>
- <div> <label><input type="checkbox" name="nestchoice" value="vhs"> VHS</label></div>
- <div> <label><input type="checkbox" name="nestchoice" value="dvd"checked> DVD</label></div>
+ <div> <label>
+ <input type="checkbox" name="nestchoice" value="vhs"> VHS</label></div>
+ <div> <label>
+ <input type="checkbox" name="nestchoice" value="dvd"checked> DVD</label></div>
</div>
</div>
"""
@@ -128,11 +152,14 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<div id="abc">
<div>
- <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label>
+ <label for="abc_0">
+ <input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label>
</div>
- <div><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1"> B</label></div>
+ <div><label for="abc_1">
+ <input type="checkbox" name="letters" value="b" id="abc_1"> B</label></div>
<div>
- <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label>
+ <label for="abc_2">
+ <input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label>
</div>
</div>
"""
@@ -154,11 +181,14 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<div id="abc">
<div>
- <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label>
+ <label for="abc_0">
+ <input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label>
</div>
- <div><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1"> B</label></div>
+ <div><label for="abc_1">
+ <input type="checkbox" name="letters" value="b" id="abc_1"> B</label></div>
<div>
- <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label>
+ <label for="abc_2">
+ <input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label>
</div>
</div>
"""
@@ -174,8 +204,10 @@ class CheckboxSelectMultipleTest(WidgetTest):
html = """
<div>
<div><label><input type="checkbox" name="numbers" value="1"> One</label></div>
- <div><label><input type="checkbox" name="numbers" value="1000"> One thousand</label></div>
- <div><label><input type="checkbox" name="numbers" value="1000000"> One million</label></div>
+ <div><label>
+ <input type="checkbox" name="numbers" value="1000"> One thousand</label></div>
+ <div><label>
+ <input type="checkbox" name="numbers" value="1000000"> One million</label></div>
</div>
"""
self.check_html(self.widget(choices=choices), "numbers", None, html=html)
@@ -186,8 +218,10 @@ class CheckboxSelectMultipleTest(WidgetTest):
]
html = """
<div>
- <div><label><input type="checkbox" name="times" value="00:00:00"> midnight</label></div>
- <div><label><input type="checkbox" name="times" value="12:00:00"> noon</label></div>
+ <div><label>
+ <input type="checkbox" name="times" value="00:00:00"> midnight</label></div>
+ <div><label>
+ <input type="checkbox" name="times" value="12:00:00"> noon</label></div>
</div>
"""
self.check_html(self.widget(choices=choices), "times", None, html=html)
diff --git a/tests/forms_tests/widget_tests/test_clearablefileinput.py b/tests/forms_tests/widget_tests/test_clearablefileinput.py
index 03fe34306b..630ff79486 100644
--- a/tests/forms_tests/widget_tests/test_clearablefileinput.py
+++ b/tests/forms_tests/widget_tests/test_clearablefileinput.py
@@ -56,12 +56,14 @@ class ClearableFileInputTest(WidgetTest):
StrangeFieldFile(),
html=(
"""
- Currently: <a href="something?chapter=1&amp;sect=2&amp;copy=3&amp;lang=en">
- something&lt;div onclick=&quot;alert(&#x27;oops&#x27;)&quot;&gt;.jpg</a>
- <input type="checkbox" name="my&lt;div&gt;file-clear" id="my&lt;div&gt;file-clear_id">
- <label for="my&lt;div&gt;file-clear_id">Clear</label><br>
- Change: <input type="file" name="my&lt;div&gt;file">
- """
+ Currently:
+ <a href="something?chapter=1&amp;sect=2&amp;copy=3&amp;lang=en">
+ something&lt;div onclick=&quot;alert(&#x27;oops&#x27;)&quot;&gt;.jpg</a>
+ <input type="checkbox" name="my&lt;div&gt;file-clear"
+ id="my&lt;div&gt;file-clear_id">
+ <label for="my&lt;div&gt;file-clear_id">Clear</label><br>
+ Change: <input type="file" name="my&lt;div&gt;file">
+ """
),
)
diff --git a/tests/forms_tests/widget_tests/test_datetimeinput.py b/tests/forms_tests/widget_tests/test_datetimeinput.py
index 5795660f30..e9bb77eb69 100644
--- a/tests/forms_tests/widget_tests/test_datetimeinput.py
+++ b/tests/forms_tests/widget_tests/test_datetimeinput.py
@@ -85,7 +85,10 @@ class DateTimeInputTest(WidgetTest):
self.widget,
"date",
d,
- html='<input type="text" name="date" value="2007-09-17 12:51:34">',
+ html=(
+ '<input type="text" name="date" '
+ 'value="2007-09-17 12:51:34">'
+ ),
)
with translation.override("es"):
self.check_html(
diff --git a/tests/forms_tests/widget_tests/test_multiplehiddeninput.py b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py
index d0ad188929..9498b756e9 100644
--- a/tests/forms_tests/widget_tests/test_multiplehiddeninput.py
+++ b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py
@@ -31,7 +31,10 @@ class MultipleHiddenInputTest(WidgetTest):
"email",
["test@example.com"],
attrs={"class": "fun"},
- html='<input type="hidden" name="email" value="test@example.com" class="fun">',
+ html=(
+ '<input type="hidden" name="email" value="test@example.com" '
+ 'class="fun">'
+ ),
)
def test_render_attrs_multiple(self):
@@ -41,7 +44,8 @@ class MultipleHiddenInputTest(WidgetTest):
["test@example.com", "foo@example.com"],
attrs={"class": "fun"},
html=(
- '<input type="hidden" name="email" value="test@example.com" class="fun">\n'
+ '<input type="hidden" name="email" value="test@example.com" '
+ 'class="fun">\n'
'<input type="hidden" name="email" value="foo@example.com" class="fun">'
),
)
@@ -53,15 +57,19 @@ class MultipleHiddenInputTest(WidgetTest):
widget,
"email",
["foo@example.com"],
- html='<input type="hidden" class="fun" value="foo@example.com" name="email">',
+ html=(
+ '<input type="hidden" class="fun" value="foo@example.com" name="email">'
+ ),
)
self.check_html(
widget,
"email",
["foo@example.com", "test@example.com"],
html=(
- '<input type="hidden" class="fun" value="foo@example.com" name="email">\n'
- '<input type="hidden" class="fun" value="test@example.com" name="email">'
+ '<input type="hidden" class="fun" value="foo@example.com" '
+ 'name="email">\n'
+ '<input type="hidden" class="fun" value="test@example.com" '
+ 'name="email">'
),
)
self.check_html(
@@ -69,7 +77,10 @@ class MultipleHiddenInputTest(WidgetTest):
"email",
["foo@example.com"],
attrs={"class": "special"},
- html='<input type="hidden" class="special" value="foo@example.com" name="email">',
+ html=(
+ '<input type="hidden" class="special" value="foo@example.com" '
+ 'name="email">'
+ ),
)
def test_render_empty(self):
diff --git a/tests/forms_tests/widget_tests/test_multiwidget.py b/tests/forms_tests/widget_tests/test_multiwidget.py
index c3f676e3f7..a89082c4a6 100644
--- a/tests/forms_tests/widget_tests/test_multiwidget.py
+++ b/tests/forms_tests/widget_tests/test_multiwidget.py
@@ -143,7 +143,8 @@ class MultiWidgetTest(WidgetTest):
attrs={"id": "foo"},
html=(
'<input id="foo_0" type="text" class="big" value="john" name="name_0">'
- '<input id="foo_1" type="text" class="small" value="lennon" name="name_1">'
+ '<input id="foo_1" type="text" class="small" value="lennon" '
+ 'name="name_1">'
),
)
@@ -161,7 +162,8 @@ class MultiWidgetTest(WidgetTest):
["john", "lennon"],
html=(
'<input id="bar_0" type="text" class="big" value="john" name="name_0">'
- '<input id="bar_1" type="text" class="small" value="lennon" name="name_1">'
+ '<input id="bar_1" type="text" class="small" value="lennon" '
+ 'name="name_1">'
),
)
diff --git a/tests/forms_tests/widget_tests/test_numberinput.py b/tests/forms_tests/widget_tests/test_numberinput.py
index a6427e6e37..15df02db4f 100644
--- a/tests/forms_tests/widget_tests/test_numberinput.py
+++ b/tests/forms_tests/widget_tests/test_numberinput.py
@@ -12,5 +12,6 @@ class NumberInputTests(WidgetTest):
widget,
"name",
"value",
- '<input type="number" name="name" value="value" max="12345" min="1234" step="9999">',
+ '<input type="number" name="name" value="value" max="12345" min="1234" '
+ 'step="9999">',
)
diff --git a/tests/forms_tests/widget_tests/test_radioselect.py b/tests/forms_tests/widget_tests/test_radioselect.py
index 89e4022f1c..5aa4c194de 100644
--- a/tests/forms_tests/widget_tests/test_radioselect.py
+++ b/tests/forms_tests/widget_tests/test_radioselect.py
@@ -18,9 +18,11 @@ class RadioSelectTest(WidgetTest):
html="""
<div>
<div><label><input type="radio" name="beatle" value=""> ------</label></div>
- <div><label><input checked type="radio" name="beatle" value="J"> John</label></div>
+ <div><label>
+ <input checked type="radio" name="beatle" value="J"> John</label></div>
<div><label><input type="radio" name="beatle" value="P"> Paul</label></div>
- <div><label><input type="radio" name="beatle" value="G"> George</label></div>
+ <div><label>
+ <input type="radio" name="beatle" value="G"> George</label></div>
<div><label><input type="radio" name="beatle" value="R"> Ringo</label></div>
</div>
""",
@@ -35,19 +37,28 @@ class RadioSelectTest(WidgetTest):
html = """
<div id="media">
<div>
- <label for="media_0"><input type="radio" name="nestchoice" value="unknown" id="media_0"> Unknown</label></div>
+ <label for="media_0">
+ <input type="radio" name="nestchoice" value="unknown" id="media_0"> Unknown
+ </label></div>
<div>
<label>Audio</label>
<div>
- <label for="media_1_0"><input type="radio" name="nestchoice" value="vinyl" id="media_1_0"> Vinyl</label></div>
- <div> <label for="media_1_1"><input type="radio" name="nestchoice" value="cd" id="media_1_1"> CD</label></div>
+ <label for="media_1_0">
+ <input type="radio" name="nestchoice" value="vinyl" id="media_1_0"> Vinyl
+ </label></div>
+ <div> <label for="media_1_1">
+ <input type="radio" name="nestchoice" value="cd" id="media_1_1"> CD
+ </label></div>
</div><div>
<label>Video</label>
<div>
- <label for="media_2_0"><input type="radio" name="nestchoice" value="vhs" id="media_2_0"> VHS</label></div>
+ <label for="media_2_0">
+ <input type="radio" name="nestchoice" value="vhs" id="media_2_0"> VHS
+ </label></div>
<div>
- <label for="media_2_1"><input type="radio" name="nestchoice" value="dvd" id="media_2_1" checked> DVD</label>
- </div>
+ <label for="media_2_1">
+ <input type="radio" name="nestchoice" value="dvd" id="media_2_1" checked> DVD
+ </label></div>
</div>
</div>
"""
@@ -68,11 +79,15 @@ class RadioSelectTest(WidgetTest):
html = """
<div id="foo">
<div>
- <label for="foo_0"><input checked type="radio" id="foo_0" value="J" name="beatle"> John</label>
+ <label for="foo_0">
+ <input checked type="radio" id="foo_0" value="J" name="beatle"> John</label>
</div>
- <div><label for="foo_1"><input type="radio" id="foo_1" value="P" name="beatle"> Paul</label></div>
- <div><label for="foo_2"><input type="radio" id="foo_2" value="G" name="beatle"> George</label></div>
- <div><label for="foo_3"><input type="radio" id="foo_3" value="R" name="beatle"> Ringo</label></div>
+ <div><label for="foo_1">
+ <input type="radio" id="foo_1" value="P" name="beatle"> Paul</label></div>
+ <div><label for="foo_2">
+ <input type="radio" id="foo_2" value="G" name="beatle"> George</label></div>
+ <div><label for="foo_3">
+ <input type="radio" id="foo_3" value="R" name="beatle"> Ringo</label></div>
</div>
"""
self.check_html(widget, "beatle", "J", html=html)
@@ -85,11 +100,15 @@ class RadioSelectTest(WidgetTest):
html = """
<div id="bar">
<div>
- <label for="bar_0"><input checked type="radio" id="bar_0" value="J" name="beatle"> John</label>
+ <label for="bar_0">
+ <input checked type="radio" id="bar_0" value="J" name="beatle"> John</label>
</div>
- <div><label for="bar_1"><input type="radio" id="bar_1" value="P" name="beatle"> Paul</label></div>
- <div><label for="bar_2"><input type="radio" id="bar_2" value="G" name="beatle"> George</label></div>
- <div><label for="bar_3"><input type="radio" id="bar_3" value="R" name="beatle"> Ringo</label></div>
+ <div><label for="bar_1">
+ <input type="radio" id="bar_1" value="P" name="beatle"> Paul</label></div>
+ <div><label for="bar_2">
+ <input type="radio" id="bar_2" value="G" name="beatle"> George</label></div>
+ <div><label for="bar_3">
+ <input type="radio" id="bar_3" value="R" name="beatle"> Ringo</label></div>
</div>
"""
self.check_html(
@@ -107,10 +126,15 @@ class RadioSelectTest(WidgetTest):
"""
html = """
<div class="bar">
- <div><label><input checked type="radio" class="bar" value="J" name="beatle"> John</label></div>
- <div><label><input type="radio" class="bar" value="P" name="beatle"> Paul</label></div>
- <div><label><input type="radio" class="bar" value="G" name="beatle"> George</label></div>
- <div><label><input type="radio" class="bar" value="R" name="beatle"> Ringo</label></div>
+ <div><label>
+ <input checked type="radio" class="bar" value="J" name="beatle"> John</label>
+ </div>
+ <div><label>
+ <input type="radio" class="bar" value="P" name="beatle"> Paul</label></div>
+ <div><label>
+ <input type="radio" class="bar" value="G" name="beatle"> George</label></div>
+ <div><label>
+ <input type="radio" class="bar" value="R" name="beatle"> Ringo</label></div>
</div>
"""
self.check_html(
@@ -131,8 +155,10 @@ class RadioSelectTest(WidgetTest):
html = """
<div>
<div><label><input type="radio" name="number" value="1"> One</label></div>
- <div><label><input type="radio" name="number" value="1000"> One thousand</label></div>
- <div><label><input type="radio" name="number" value="1000000"> One million</label></div>
+ <div><label>
+ <input type="radio" name="number" value="1000"> One thousand</label></div>
+ <div><label>
+ <input type="radio" name="number" value="1000000"> One million</label></div>
</div>
"""
self.check_html(self.widget(choices=choices), "number", None, html=html)
@@ -143,8 +169,10 @@ class RadioSelectTest(WidgetTest):
]
html = """
<div>
- <div><label><input type="radio" name="time" value="00:00:00"> midnight</label></div>
- <div><label><input type="radio" name="time" value="12:00:00"> noon</label></div>
+ <div><label>
+ <input type="radio" name="time" value="00:00:00"> midnight</label></div>
+ <div><label>
+ <input type="radio" name="time" value="12:00:00"> noon</label></div>
</div>
"""
self.check_html(self.widget(choices=choices), "time", None, html=html)
@@ -158,11 +186,16 @@ class RadioSelectTest(WidgetTest):
["J"],
html="""
<div>
- <div><label><input type="radio" name="beatle_0" value=""> ------</label></div>
- <div><label><input checked type="radio" name="beatle_0" value="J"> John</label></div>
- <div><label><input type="radio" name="beatle_0" value="P"> Paul</label></div>
- <div><label><input type="radio" name="beatle_0" value="G"> George</label></div>
- <div><label><input type="radio" name="beatle_0" value="R"> Ringo</label></div>
+ <div><label>
+ <input type="radio" name="beatle_0" value=""> ------</label></div>
+ <div><label>
+ <input checked type="radio" name="beatle_0" value="J"> John</label></div>
+ <div><label>
+ <input type="radio" name="beatle_0" value="P"> Paul</label></div>
+ <div><label>
+ <input type="radio" name="beatle_0" value="G"> George</label></div>
+ <div><label>
+ <input type="radio" name="beatle_0" value="R"> Ringo</label></div>
</div>
""",
)
diff --git a/tests/forms_tests/widget_tests/test_select.py b/tests/forms_tests/widget_tests/test_select.py
index e78feeb110..8a40bd8b6a 100644
--- a/tests/forms_tests/widget_tests/test_select.py
+++ b/tests/forms_tests/widget_tests/test_select.py
@@ -227,12 +227,16 @@ class SelectTest(WidgetTest):
"email",
"ŠĐĆŽćžšđ",
html=(
- """<select name="email">
- <option value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" selected>
+ """
+ <select name="email">
+ <option value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111"
+ selected>
\u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111
</option>
- <option value="\u0107\u017e\u0161\u0111">abc\u0107\u017e\u0161\u0111</option>
- </select>"""
+ <option value="\u0107\u017e\u0161\u0111">abc\u0107\u017e\u0161\u0111
+ </option>
+ </select>
+ """
),
)
diff --git a/tests/forms_tests/widget_tests/test_selectdatewidget.py b/tests/forms_tests/widget_tests/test_selectdatewidget.py
index de0c35cd5b..9192e4c1f1 100644
--- a/tests/forms_tests/widget_tests/test_selectdatewidget.py
+++ b/tests/forms_tests/widget_tests/test_selectdatewidget.py
@@ -520,7 +520,8 @@ class SelectDateWidgetTest(WidgetTest):
""",
)
- # Even with an invalid date, the widget should reflect the entered value (#17401).
+ # Even with an invalid date, the widget should reflect the entered
+ # value.
self.assertEqual(w.render("mydate", "2010-02-30").count("selected"), 3)
# Years before 1900 should work.
diff --git a/tests/forms_tests/widget_tests/test_textarea.py b/tests/forms_tests/widget_tests/test_textarea.py
index e92dfc51f4..e7695ab018 100644
--- a/tests/forms_tests/widget_tests/test_textarea.py
+++ b/tests/forms_tests/widget_tests/test_textarea.py
@@ -47,7 +47,8 @@ class TextareaTest(WidgetTest):
"msg",
'some "quoted" & ampersanded value',
html=(
- '<textarea rows="10" cols="40" name="msg">some &quot;quoted&quot; &amp; ampersanded value</textarea>'
+ '<textarea rows="10" cols="40" name="msg">'
+ "some &quot;quoted&quot; &amp; ampersanded value</textarea>"
),
)
@@ -57,6 +58,7 @@ class TextareaTest(WidgetTest):
"msg",
mark_safe("pre &quot;quoted&quot; value"),
html=(
- '<textarea rows="10" cols="40" name="msg">pre &quot;quoted&quot; value</textarea>'
+ '<textarea rows="10" cols="40" name="msg">pre &quot;quoted&quot; value'
+ "</textarea>"
),
)
diff --git a/tests/forms_tests/widget_tests/test_textinput.py b/tests/forms_tests/widget_tests/test_textinput.py
index 52ffabec65..efd0cfed4b 100644
--- a/tests/forms_tests/widget_tests/test_textinput.py
+++ b/tests/forms_tests/widget_tests/test_textinput.py
@@ -48,7 +48,10 @@ class TextInputTest(WidgetTest):
self.widget,
"email",
'some "quoted" & ampersanded value',
- html='<input type="text" name="email" value="some &quot;quoted&quot; &amp; ampersanded value">',
+ html=(
+ '<input type="text" name="email" '
+ 'value="some &quot;quoted&quot; &amp; ampersanded value">'
+ ),
)
def test_render_custom_attrs(self):
@@ -57,7 +60,9 @@ class TextInputTest(WidgetTest):
"email",
"test@example.com",
attrs={"class": "fun"},
- html='<input type="text" name="email" value="test@example.com" class="fun">',
+ html=(
+ '<input type="text" name="email" value="test@example.com" class="fun">'
+ ),
)
def test_render_unicode(self):
@@ -81,7 +86,9 @@ class TextInputTest(WidgetTest):
widget,
"email",
"foo@example.com",
- html='<input type="email" class="fun" value="foo@example.com" name="email">',
+ html=(
+ '<input type="email" class="fun" value="foo@example.com" name="email">'
+ ),
)
def test_attrs_precedence(self):