diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2016-03-28 11:02:04 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-04-21 19:16:38 -0400 |
| commit | ec6121693f112ae33b653b4364e812722d2eb567 (patch) | |
| tree | b791f1345a114d07657a3d226d1c5ff4b1e3f369 /tests/model_forms | |
| parent | 4d1c229ee5cb210e8b592a8d9c87d4a66864328e (diff) | |
Fixed #22383 -- Added support for HTML5 required attribute on required form fields.
Diffstat (limited to 'tests/model_forms')
| -rw-r--r-- | tests/model_forms/tests.py | 139 |
1 files changed, 71 insertions, 68 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index 289c03416d..56a5bad781 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -525,11 +525,11 @@ class ModelFormBaseTest(TestCase): self.assertHTMLEqual( str(SubclassMeta()), """<tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="20" /></td></tr> +<td><input id="id_name" type="text" name="name" maxlength="20" required /></td></tr> <tr><th><label for="id_slug">Slug:</label></th> -<td><input id="id_slug" type="text" name="slug" maxlength="20" /></td></tr> +<td><input id="id_slug" type="text" name="slug" maxlength="20" required /></td></tr> <tr><th><label for="id_checkbox">Checkbox:</label></th> -<td><input type="checkbox" name="checkbox" id="id_checkbox" /></td></tr>""" +<td><input type="checkbox" name="checkbox" id="id_checkbox" required /></td></tr>""" ) def test_orderfields_form(self): @@ -543,9 +543,9 @@ class ModelFormBaseTest(TestCase): self.assertHTMLEqual( str(OrderFields()), """<tr><th><label for="id_url">The URL:</label></th> -<td><input id="id_url" type="text" name="url" maxlength="40" /></td></tr> +<td><input id="id_url" type="text" name="url" maxlength="40" required /></td></tr> <tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="20" /></td></tr>""" +<td><input id="id_name" type="text" name="name" maxlength="20" required /></td></tr>""" ) def test_orderfields2_form(self): @@ -591,15 +591,15 @@ class TestFieldOverridesByFormMeta(SimpleTestCase): form = FieldOverridesByFormMetaForm() self.assertHTMLEqual( str(form['name']), - '<textarea id="id_name" rows="10" cols="40" name="name" maxlength="20"></textarea>', + '<textarea id="id_name" rows="10" cols="40" name="name" maxlength="20" required></textarea>', ) self.assertHTMLEqual( str(form['url']), - '<input id="id_url" type="text" class="url" name="url" maxlength="40" />', + '<input id="id_url" type="text" class="url" name="url" maxlength="40" required />', ) self.assertHTMLEqual( str(form['slug']), - '<input id="id_slug" type="text" name="slug" maxlength="20" />', + '<input id="id_slug" type="text" name="slug" maxlength="20" required />', ) def test_label_overrides(self): @@ -1041,29 +1041,29 @@ class ModelFormBasicTests(TestCase): self.assertHTMLEqual( str(f), """<tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="20" /></td></tr> +<td><input id="id_name" type="text" name="name" maxlength="20" required /></td></tr> <tr><th><label for="id_slug">Slug:</label></th> -<td><input id="id_slug" type="text" name="slug" maxlength="20" /></td></tr> +<td><input id="id_slug" type="text" name="slug" maxlength="20" required /></td></tr> <tr><th><label for="id_url">The URL:</label></th> -<td><input id="id_url" type="text" name="url" maxlength="40" /></td></tr>""" +<td><input id="id_url" type="text" name="url" maxlength="40" required /></td></tr>""" ) self.assertHTMLEqual( str(f.as_ul()), - """<li><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="20" /></li> -<li><label for="id_slug">Slug:</label> <input id="id_slug" type="text" name="slug" maxlength="20" /></li> -<li><label for="id_url">The URL:</label> <input id="id_url" type="text" name="url" maxlength="40" /></li>""" + """<li><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="20" required /></li> +<li><label for="id_slug">Slug:</label> <input id="id_slug" type="text" name="slug" maxlength="20" required /></li> +<li><label for="id_url">The URL:</label> <input id="id_url" type="text" name="url" maxlength="40" required /></li>""" ) self.assertHTMLEqual( str(f["name"]), - """<input id="id_name" type="text" name="name" maxlength="20" />""") + """<input id="id_name" type="text" name="name" maxlength="20" required />""") def test_auto_id(self): f = BaseCategoryForm(auto_id=False) self.assertHTMLEqual( str(f.as_ul()), - """<li>Name: <input type="text" name="name" maxlength="20" /></li> -<li>Slug: <input type="text" name="slug" maxlength="20" /></li> -<li>The URL: <input type="text" name="url" maxlength="40" /></li>""" + """<li>Name: <input type="text" name="name" maxlength="20" required /></li> +<li>Slug: <input type="text" name="slug" maxlength="20" required /></li> +<li>The URL: <input type="text" name="url" maxlength="40" required /></li>""" ) def test_initial_values(self): @@ -1077,15 +1077,15 @@ class ModelFormBasicTests(TestCase): }) self.assertHTMLEqual( f.as_ul(), - '''<li>Headline: <input type="text" name="headline" value="Your headline here" maxlength="50" /></li> -<li>Slug: <input type="text" name="slug" maxlength="50" /></li> -<li>Pub date: <input type="text" name="pub_date" /></li> -<li>Writer: <select name="writer"> + '''<li>Headline: <input type="text" name="headline" value="Your headline here" maxlength="50" required /></li> +<li>Slug: <input type="text" name="slug" maxlength="50" required /></li> +<li>Pub date: <input type="text" name="pub_date" required /></li> +<li>Writer: <select name="writer" required> <option value="" selected="selected">---------</option> <option value="%s">Bob Woodward</option> <option value="%s">Mike Royko</option> </select></li> -<li>Article: <textarea rows="10" cols="40" name="article"></textarea></li> +<li>Article: <textarea rows="10" cols="40" name="article" required></textarea></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="%s" selected="selected">Entertainment</option> <option value="%s" selected="selected">It's a test</option> @@ -1103,7 +1103,7 @@ class ModelFormBasicTests(TestCase): f = RoykoForm(auto_id=False, instance=self.w_royko) self.assertHTMLEqual( six.text_type(f), - '''<tr><th>Name:</th><td><input type="text" name="name" value="Mike Royko" maxlength="50" /><br /> + '''<tr><th>Name:</th><td><input type="text" name="name" value="Mike Royko" maxlength="50" required /><br /> <span class="helptext">Use both first and last names.</span></td></tr>''' ) @@ -1119,15 +1119,15 @@ class ModelFormBasicTests(TestCase): f = ArticleForm(auto_id=False, instance=art) self.assertHTMLEqual( f.as_ul(), - '''<li>Headline: <input type="text" name="headline" value="Test article" maxlength="50" /></li> -<li>Slug: <input type="text" name="slug" value="test-article" maxlength="50" /></li> -<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" /></li> -<li>Writer: <select name="writer"> + '''<li>Headline: <input type="text" name="headline" value="Test article" maxlength="50" required /></li> +<li>Slug: <input type="text" name="slug" value="test-article" maxlength="50" required /></li> +<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required /></li> +<li>Writer: <select name="writer" required> <option value="">---------</option> <option value="%s">Bob Woodward</option> <option value="%s" selected="selected">Mike Royko</option> </select></li> -<li>Article: <textarea rows="10" cols="40" name="article">Hello.</textarea></li> +<li>Article: <textarea rows="10" cols="40" name="article" required>Hello.</textarea></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="%s">Entertainment</option> <option value="%s">It's a test</option> @@ -1174,7 +1174,7 @@ class ModelFormBasicTests(TestCase): self.assertHTMLEqual( form.as_ul(), """<li><label for="id_headline">Headline:</label> -<input id="id_headline" type="text" name="headline" maxlength="50" /></li> +<input id="id_headline" type="text" name="headline" maxlength="50" required /></li> <li><label for="id_categories">Categories:</label> <select multiple="multiple" name="categories" id="id_categories"> <option value="%d" selected="selected">Entertainment</option> @@ -1235,15 +1235,15 @@ class ModelFormBasicTests(TestCase): f = ArticleForm(auto_id=False) self.assertHTMLEqual( six.text_type(f), - '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" /></td></tr> -<tr><th>Slug:</th><td><input type="text" name="slug" maxlength="50" /></td></tr> -<tr><th>Pub date:</th><td><input type="text" name="pub_date" /></td></tr> -<tr><th>Writer:</th><td><select name="writer"> + '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" required /></td></tr> +<tr><th>Slug:</th><td><input type="text" name="slug" maxlength="50" required /></td></tr> +<tr><th>Pub date:</th><td><input type="text" name="pub_date" required /></td></tr> +<tr><th>Writer:</th><td><select name="writer" required> <option value="" selected="selected">---------</option> <option value="%s">Bob Woodward</option> <option value="%s">Mike Royko</option> </select></td></tr> -<tr><th>Article:</th><td><textarea rows="10" cols="40" name="article"></textarea></td></tr> +<tr><th>Article:</th><td><textarea rows="10" cols="40" name="article" required></textarea></td></tr> <tr><th>Categories:</th><td><select multiple="multiple" name="categories"> <option value="%s">Entertainment</option> <option value="%s">It's a test</option> @@ -1265,15 +1265,15 @@ class ModelFormBasicTests(TestCase): f = ArticleForm(auto_id=False, instance=new_art) self.assertHTMLEqual( f.as_ul(), - '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" /></li> -<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" /></li> -<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" /></li> -<li>Writer: <select name="writer"> + '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" required /></li> +<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" required /></li> +<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required /></li> +<li>Writer: <select name="writer" required> <option value="">---------</option> <option value="%s">Bob Woodward</option> <option value="%s" selected="selected">Mike Royko</option> </select></li> -<li>Article: <textarea rows="10" cols="40" name="article">Hello.</textarea></li> +<li>Article: <textarea rows="10" cols="40" name="article" required>Hello.</textarea></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="%s" selected="selected">Entertainment</option> <option value="%s">It's a test</option> @@ -1301,8 +1301,8 @@ class ModelFormBasicTests(TestCase): f = PartialArticleForm(auto_id=False) self.assertHTMLEqual( six.text_type(f), - '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" /></td></tr> -<tr><th>Pub date:</th><td><input type="text" name="pub_date" /></td></tr>''') + '''<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" required /></td></tr> +<tr><th>Pub date:</th><td><input type="text" name="pub_date" required /></td></tr>''') # You can create a form over a subset of the available fields # by specifying a 'fields' argument to form_for_instance. @@ -1322,9 +1322,9 @@ class ModelFormBasicTests(TestCase): }, auto_id=False, instance=art) self.assertHTMLEqual( f.as_ul(), - '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" /></li> -<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" /></li> -<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" /></li>''' + '''<li>Headline: <input type="text" name="headline" value="New headline" maxlength="50" required /></li> +<li>Slug: <input type="text" name="slug" value="new-headline" maxlength="50" required /></li> +<li>Pub date: <input type="text" name="pub_date" value="1988-01-04" required /></li>''' ) self.assertTrue(f.is_valid()) new_art = f.save() @@ -1411,15 +1411,15 @@ class ModelFormBasicTests(TestCase): f = ArticleForm(auto_id=False) self.assertHTMLEqual( f.as_ul(), - '''<li>Headline: <input type="text" name="headline" maxlength="50" /></li> -<li>Slug: <input type="text" name="slug" maxlength="50" /></li> -<li>Pub date: <input type="text" name="pub_date" /></li> -<li>Writer: <select name="writer"> + '''<li>Headline: <input type="text" name="headline" maxlength="50" required /></li> +<li>Slug: <input type="text" name="slug" maxlength="50" required /></li> +<li>Pub date: <input type="text" name="pub_date" required /></li> +<li>Writer: <select name="writer" required> <option value="" selected="selected">---------</option> <option value="%s">Bob Woodward</option> <option value="%s">Mike Royko</option> </select></li> -<li>Article: <textarea rows="10" cols="40" name="article"></textarea></li> +<li>Article: <textarea rows="10" cols="40" name="article" required></textarea></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="%s">Entertainment</option> <option value="%s">It's a test</option> @@ -1436,16 +1436,16 @@ class ModelFormBasicTests(TestCase): w_bernstein = Writer.objects.create(name='Carl Bernstein') self.assertHTMLEqual( f.as_ul(), - '''<li>Headline: <input type="text" name="headline" maxlength="50" /></li> -<li>Slug: <input type="text" name="slug" maxlength="50" /></li> -<li>Pub date: <input type="text" name="pub_date" /></li> -<li>Writer: <select name="writer"> + '''<li>Headline: <input type="text" name="headline" maxlength="50" required /></li> +<li>Slug: <input type="text" name="slug" maxlength="50" required /></li> +<li>Pub date: <input type="text" name="pub_date" required /></li> +<li>Writer: <select name="writer" required> <option value="" selected="selected">---------</option> <option value="%s">Bob Woodward</option> <option value="%s">Carl Bernstein</option> <option value="%s">Mike Royko</option> </select></li> -<li>Article: <textarea rows="10" cols="40" name="article"></textarea></li> +<li>Article: <textarea rows="10" cols="40" name="article" required></textarea></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="%s">Entertainment</option> <option value="%s">It's a test</option> @@ -1798,12 +1798,12 @@ class ModelOneToOneFieldTests(TestCase): form = WriterProfileForm() self.assertHTMLEqual( form.as_p(), - '''<p><label for="id_writer">Writer:</label> <select name="writer" id="id_writer"> + '''<p><label for="id_writer">Writer:</label> <select name="writer" id="id_writer" required> <option value="" selected="selected">---------</option> <option value="%s">Bob Woodward</option> <option value="%s">Mike Royko</option> </select></p> -<p><label for="id_age">Age:</label> <input type="number" name="age" id="id_age" min="0" /></p>''' % ( +<p><label for="id_age">Age:</label> <input type="number" name="age" id="id_age" min="0" required /></p>''' % ( self.w_woodward.pk, self.w_royko.pk, ) ) @@ -1819,12 +1819,13 @@ class ModelOneToOneFieldTests(TestCase): form = WriterProfileForm(instance=instance) self.assertHTMLEqual( form.as_p(), - '''<p><label for="id_writer">Writer:</label> <select name="writer" id="id_writer"> + '''<p><label for="id_writer">Writer:</label> <select name="writer" id="id_writer" required> <option value="">---------</option> <option value="%s" selected="selected">Bob Woodward</option> <option value="%s">Mike Royko</option> </select></p> -<p><label for="id_age">Age:</label> <input type="number" name="age" value="65" id="id_age" min="0" /></p>''' % ( +<p><label for="id_age">Age:</label> +<input type="number" name="age" value="65" id="id_age" min="0" required /></p>''' % ( self.w_woodward.pk, self.w_royko.pk, ) ) @@ -2403,9 +2404,9 @@ class OtherModelFormTests(TestCase): self.assertHTMLEqual( six.text_type(CategoryForm()), '''<tr><th><label for="id_description">Description:</label></th> -<td><input type="text" name="description" id="id_description" /></td></tr> +<td><input type="text" name="description" id="id_description" required /></td></tr> <tr><th><label for="id_url">The URL:</label></th> -<td><input id="id_url" type="text" name="url" maxlength="40" /></td></tr>''' +<td><input id="id_url" type="text" name="url" maxlength="40" required /></td></tr>''' ) # to_field_name should also work on ModelMultipleChoiceField ################## @@ -2424,7 +2425,7 @@ class OtherModelFormTests(TestCase): self.assertHTMLEqual( six.text_type(CustomFieldForExclusionForm()), '''<tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="10" /></td></tr>''' +<td><input id="id_name" type="text" name="name" maxlength="10" required /></td></tr>''' ) def test_iterable_model_m2m(self): @@ -2438,8 +2439,9 @@ class OtherModelFormTests(TestCase): self.maxDiff = 1024 self.assertHTMLEqual( form.as_p(), - """<p><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="50" /></p> - <p><label for="id_colours">Colours:</label> <select multiple="multiple" name="colours" id="id_colours"> + """<p><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" maxlength="50" required /></p> + <p><label for="id_colours">Colours:</label> + <select multiple="multiple" name="colours" id="id_colours" required> <option value="%(blue_pk)s">Blue</option> </select></p>""" % {'blue_pk': colour.pk}) @@ -2456,15 +2458,16 @@ class OtherModelFormTests(TestCase): self.assertHTMLEqual( form.as_p(), """ - <p><label for="id_title">Title:</label> <input id="id_title" maxlength="30" name="title" type="text" /></p> + <p><label for="id_title">Title:</label> + <input id="id_title" maxlength="30" name="title" type="text" required /></p> <p><label for="id_date_published">Date published:</label> - <input id="id_date_published" name="date_published" type="text" value="{0}" /> + <input id="id_date_published" name="date_published" type="text" value="{0}" required /> <input id="initial-id_date_published" name="initial-date_published" type="hidden" value="{0}" /></p> - <p><label for="id_mode">Mode:</label> <select id="id_mode" name="mode"> + <p><label for="id_mode">Mode:</label> <select id="id_mode" name="mode" required> <option value="di" selected="selected">direct</option> <option value="de">delayed</option></select> <input id="initial-id_mode" name="initial-mode" type="hidden" value="di" /></p> - <p><label for="id_category">Category:</label> <select id="id_category" name="category"> + <p><label for="id_category">Category:</label> <select id="id_category" name="category" required> <option value="1">Games</option> <option value="2">Comics</option> <option value="3" selected="selected">Novel</option></select> |
