From ec6121693f112ae33b653b4364e812722d2eb567 Mon Sep 17 00:00:00 2001
From: Jon Dufresne
Date: Mon, 28 Mar 2016 11:02:04 -0700
Subject: Fixed #22383 -- Added support for HTML5 required attribute on
required form fields.
---
tests/admin_views/tests.py | 2 +-
tests/forms_tests/field_tests/test_charfield.py | 2 +-
tests/forms_tests/field_tests/test_choicefield.py | 2 +-
tests/forms_tests/field_tests/test_decimalfield.py | 11 +-
.../forms_tests/field_tests/test_durationfield.py | 2 +-
tests/forms_tests/field_tests/test_emailfield.py | 7 +-
tests/forms_tests/field_tests/test_floatfield.py | 14 +-
tests/forms_tests/field_tests/test_integerfield.py | 10 +-
.../field_tests/test_multivaluefield.py | 16 +-
tests/forms_tests/field_tests/test_urlfield.py | 4 +-
tests/forms_tests/tests/test_forms.py | 909 ++++++++++++---------
tests/forms_tests/tests/test_regressions.py | 22 +-
tests/forms_tests/tests/tests.py | 26 +-
tests/i18n/tests.py | 20 +-
tests/model_forms/tests.py | 139 ++--
tests/model_formsets/tests.py | 4 +-
tests/modeladmin/tests.py | 4 +-
tests/postgres_tests/test_array.py | 6 +-
18 files changed, 675 insertions(+), 525 deletions(-)
(limited to 'tests')
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 5c0d5ed51c..b657afe859 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -3291,7 +3291,7 @@ class AdminActionsTest(TestCase):
Refs #15964.
"""
response = self.client.get(reverse('admin:admin_views_externalsubscriber_changelist'))
- self.assertContains(response, '''
Last name:
-
+
Birthday:
-
"""
+"""
)
def test_unbound_form(self):
@@ -181,38 +181,38 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
str(p),
"""| First name: |
- |
+
| Last name: |
- |
+
| Birthday: |
- |
"""
+"""
)
self.assertHTMLEqual(
p.as_table(),
"""| First name: |
- |
+
| Last name: |
- |
+
| Birthday: |
- |
"""
+"""
)
self.assertHTMLEqual(
p.as_ul(),
"""First name:
-
+
Last name:
-
+
Birthday:
-"""
+"""
)
self.assertHTMLEqual(
p.as_p(),
"""First name:
-
+
Last name:
-
+
Birthday:
-
"""
+"""
)
def test_unicode_values(self):
@@ -225,33 +225,33 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_table(),
'| First name: | '
- ' |
\n'
+ '\n'
'| Last name:'
' | |
\n'
+ 'id="id_last_name" required />\n'
'| Birthday: | '
- ' |
'
+ ''
)
self.assertHTMLEqual(
p.as_ul(),
'First name: '
- '\n'
+ '\n'
'Last name: '
'\n'
+ 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required />\n'
'Birthday: '
- ''
+ ''
)
self.assertHTMLEqual(
p.as_p(),
'First name: '
- '
\n'
+ '\n'
'Last name: '
'
\n'
+ 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required />\n'
'Birthday: '
- '
'
+ ''
)
p = Person({'last_name': 'Lennon'})
@@ -271,9 +271,12 @@ class FormsTestCase(SimpleTestCase):
self.assertEqual(p['first_name'].errors.as_text(), '* This field is required.')
p = Person()
- self.assertHTMLEqual(str(p['first_name']), '')
- self.assertHTMLEqual(str(p['last_name']), '')
- self.assertHTMLEqual(str(p['birthday']), '')
+ self.assertHTMLEqual(
+ str(p['first_name']),
+ '',
+ )
+ self.assertHTMLEqual(str(p['last_name']), '')
+ self.assertHTMLEqual(str(p['birthday']), '')
def test_cleaned_data_only_fields(self):
# cleaned_data will always *only* contain a key for fields defined in the
@@ -333,29 +336,29 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_table(),
"""| First name: |
- |
+
| Last name: |
- |
+
| Birthday: |
- |
"""
+"""
)
self.assertHTMLEqual(
p.as_ul(),
"""First name:
-
+
Last name:
-
+
Birthday:
-"""
+"""
)
self.assertHTMLEqual(
p.as_p(),
"""First name:
-
+
Last name:
-
+
Birthday:
-
"""
+"""
)
def test_auto_id_true(self):
@@ -365,11 +368,11 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_ul(),
"""First name:
-
+
Last name:
-
+
Birthday:
-"""
+"""
)
def test_auto_id_false(self):
@@ -378,9 +381,9 @@ class FormsTestCase(SimpleTestCase):
p = Person(auto_id=False)
self.assertHTMLEqual(
p.as_ul(),
- """First name:
-Last name:
-Birthday: """
+ """First name:
+Last name:
+Birthday: """
)
def test_id_on_field(self):
@@ -390,9 +393,9 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_ul(),
"""First name:
-
-Last name:
-Birthday: """
+
+Last name:
+Birthday: """
)
def test_auto_id_on_form_and_field(self):
@@ -402,11 +405,11 @@ class FormsTestCase(SimpleTestCase):
self.assertHTMLEqual(
p.as_ul(),
"""First name:
-
+
Last name:
-
+
Birthday:
-"""
+"""
)
def test_various_boolean_values(self):
@@ -415,26 +418,33 @@ class FormsTestCase(SimpleTestCase):
get_spam = BooleanField()
f = SignupForm(auto_id=False)
- self.assertHTMLEqual(str(f['email']), '')
- self.assertHTMLEqual(str(f['get_spam']), '')
+ self.assertHTMLEqual(str(f['email']), '')
+ self.assertHTMLEqual(str(f['get_spam']), '')
f = SignupForm({'email': 'test@example.com', 'get_spam': True}, auto_id=False)
- self.assertHTMLEqual(str(f['email']), '')
- self.assertHTMLEqual(str(f['get_spam']), '')
+ self.assertHTMLEqual(str(f['email']), '')
+ self.assertHTMLEqual(
+ str(f['get_spam']),
+ '',
+ )
# 'True' or 'true' should be rendered without a value attribute
f = SignupForm({'email': 'test@example.com', 'get_spam': 'True'}, auto_id=False)
- self.assertHTMLEqual(str(f['get_spam']), '')
+ self.assertHTMLEqual(
+ str(f['get_spam']),
+ '',
+ )
f = SignupForm({'email': 'test@example.com', 'get_spam': 'true'}, auto_id=False)
- self.assertHTMLEqual(str(f['get_spam']), '')
+ self.assertHTMLEqual(
+ str(f['get_spam']), '')
# A value of 'False' or 'false' should be rendered unchecked
f = SignupForm({'email': 'test@example.com', 'get_spam': 'False'}, auto_id=False)
- self.assertHTMLEqual(str(f['get_spam']), '')
+ self.assertHTMLEqual(str(f['get_spam']), '')
f = SignupForm({'email': 'test@example.com', 'get_spam': 'false'}, auto_id=False)
- self.assertHTMLEqual(str(f['get_spam']), '')
+ self.assertHTMLEqual(str(f['get_spam']), '')
# A value of '0' should be interpreted as a True value (#16820)
f = SignupForm({'email': 'test@example.com', 'get_spam': '0'})
@@ -448,13 +458,16 @@ class FormsTestCase(SimpleTestCase):
message = CharField(widget=Textarea)
f = ContactForm(auto_id=False)
- self.assertHTMLEqual(str(f['subject']), '')
- self.assertHTMLEqual(str(f['message']), '')
+ self.assertHTMLEqual(str(f['subject']), '')
+ self.assertHTMLEqual(str(f['message']), '')
# as_textarea(), as_text() and as_hidden() are shortcuts for changing the output
# widget type:
- self.assertHTMLEqual(f['subject'].as_textarea(), '')
- self.assertHTMLEqual(f['message'].as_text(), '')
+ self.assertHTMLEqual(
+ f['subject'].as_textarea(),
+ '',
+ )
+ self.assertHTMLEqual(f['message'].as_text(), '')
self.assertHTMLEqual(f['message'].as_hidden(), '')
# The 'widget' parameter to a Field can also be an instance:
@@ -463,17 +476,20 @@ class FormsTestCase(SimpleTestCase):
message = CharField(widget=Textarea(attrs={'rows': 80, 'cols': 20}))
f = ContactForm(auto_id=False)
- self.assertHTMLEqual(str(f['message']), '')
+ self.assertHTMLEqual(str(f['message']), '')
# Instance-level attrs are *not* carried over to as_textarea(), as_text() and
# as_hidden():
- self.assertHTMLEqual(f['message'].as_text(), '')
+ self.assertHTMLEqual(f['message'].as_text(), '')
f = ContactForm({'subject': 'Hello', 'message': 'I love you.'}, auto_id=False)
self.assertHTMLEqual(
f['subject'].as_textarea(),
- ''
+ ''
+ )
+ self.assertHTMLEqual(
+ f['message'].as_text(),
+ '',
)
- self.assertHTMLEqual(f['message'].as_text(), '')
self.assertHTMLEqual(f['message'].as_hidden(), '')
def test_forms_with_choices(self):
@@ -483,12 +499,12 @@ class FormsTestCase(SimpleTestCase):
language = ChoiceField(choices=[('P', 'Python'), ('J', 'Java')])
f = FrameworkForm(auto_id=False)
- self.assertHTMLEqual(str(f['language']), """