summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBaptiste Mispelon <bmispelon@gmail.com>2013-04-06 16:04:30 +0200
committerClaude Paroz <claude@2xlibre.net>2013-04-12 10:17:17 +0200
commitab686022f8619b57e7f851fb2ce8617583d70d8d (patch)
tree97202e9ca850b39fc279e99a02a0be00e6962da6 /tests
parent0f99246b6f4e7d08600c19fbbeb8feb1a335f985 (diff)
Fixed #20211: Document backwards-incompatible change in BoundField.label_tag
Also cleaned up label escaping and consolidated the test suite regarding label_tag.
Diffstat (limited to 'tests')
-rw-r--r--tests/forms_tests/tests/forms.py52
1 files changed, 35 insertions, 17 deletions
diff --git a/tests/forms_tests/tests/forms.py b/tests/forms_tests/tests/forms.py
index 310525e0a5..cf63acb57c 100644
--- a/tests/forms_tests/tests/forms.py
+++ b/tests/forms_tests/tests/forms.py
@@ -1623,23 +1623,6 @@ class FormsTestCase(TestCase):
</form>""")
self.assertEqual(Template('{{ form.password1.help_text }}').render(Context({'form': UserRegistration(auto_id=False)})), '')
- # The label_tag() method takes an optional attrs argument: a dictionary of HTML
- # attributes to add to the <label> tag.
- f = UserRegistration(auto_id='id_%s')
- form_output = []
-
- for bf in f:
- form_output.append(bf.label_tag(attrs={'class': 'pretty'}))
-
- expected_form_output = [
- '<label for="id_username" class="pretty">Username</label>',
- '<label for="id_password1" class="pretty">Password1</label>',
- '<label for="id_password2" class="pretty">Password2</label>',
- ]
- self.assertEqual(len(form_output), len(expected_form_output))
- for i in range(len(form_output)):
- self.assertHTMLEqual(form_output[i], expected_form_output[i])
-
# To display the errors that aren't associated with a particular field -- e.g.,
# the errors caused by Form.clean() -- use {{ form.non_field_errors }} in the
# template. If used on its own, it is displayed as a <ul> (or an empty string, if
@@ -1828,3 +1811,38 @@ class FormsTestCase(TestCase):
form = JSONForm(data={'json': '{}'});
form.full_clean()
self.assertEqual(form.cleaned_data, {'json' : {}})
+
+ def test_boundfield_label_tag(self):
+ class SomeForm(Form):
+ field = CharField()
+ boundfield = SomeForm()['field']
+
+ testcases = [ # (args, kwargs, expected)
+ # without anything: just print the <label>
+ ((), {}, '<label for="id_field">Field</label>'),
+
+ # passing just one argument: overrides the field's label
+ (('custom',), {}, '<label for="id_field">custom</label>'),
+
+ # the overriden label is escaped
+ (('custom&',), {}, '<label for="id_field">custom&amp;</label>'),
+ ((mark_safe('custom&'),), {}, '<label for="id_field">custom&</label>'),
+
+ # Passing attrs to add extra attributes on the <label>
+ ((), {'attrs': {'class': 'pretty'}}, '<label for="id_field" class="pretty">Field</label>')
+ ]
+
+ for args, kwargs, expected in testcases:
+ self.assertHTMLEqual(boundfield.label_tag(*args, **kwargs), expected)
+
+ def test_boundfield_label_tag_no_id(self):
+ """
+ If a widget has no id, label_tag just returns the text with no
+ surrounding <label>.
+ """
+ class SomeForm(Form):
+ field = CharField()
+ boundfield = SomeForm(auto_id='')['field']
+
+ self.assertHTMLEqual(boundfield.label_tag(), 'Field')
+ self.assertHTMLEqual(boundfield.label_tag('Custom&'), 'Custom&amp;')