summaryrefslogtreecommitdiff
path: root/tests/model_forms
diff options
context:
space:
mode:
authorLoic Bistuer <loic.bistuer@sixmedia.com>2013-04-04 02:51:37 +0700
committerTim Graham <timograham@gmail.com>2013-06-13 15:06:25 -0400
commit9e50833e2293aa2734f14f9873abe4f83d03b8c6 (patch)
tree68d879969ba722cc9e8b4e37d32746ac8cd119af /tests/model_forms
parentdc9c359546580d40df209816cef244b78dcf7435 (diff)
Fixed #20000 -- Allowed ModelForm meta overrides for label, help_text and error_messages
Diffstat (limited to 'tests/model_forms')
-rw-r--r--tests/model_forms/tests.py69
1 files changed, 59 insertions, 10 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index 509413fb61..aadc7a618e 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -490,7 +490,7 @@ class ModelFormBaseTest(TestCase):
['slug', 'name'])
-class TestWidgetForm(forms.ModelForm):
+class FieldOverridesTroughFormMetaForm(forms.ModelForm):
class Meta:
model = Category
fields = ['name', 'url', 'slug']
@@ -498,25 +498,74 @@ class TestWidgetForm(forms.ModelForm):
'name': forms.Textarea,
'url': forms.TextInput(attrs={'class': 'url'})
}
+ labels = {
+ 'name': 'Title',
+ }
+ help_texts = {
+ 'slug': 'Watch out! Letters, numbers, underscores and hyphens only.',
+ }
+ error_messages = {
+ 'slug': {
+ 'invalid': (
+ "Didn't you read the help text? "
+ "We said letters, numbers, underscores and hyphens only!"
+ )
+ }
+ }
+class TestFieldOverridesTroughFormMeta(TestCase):
+ def test_widget_overrides(self):
+ form = FieldOverridesTroughFormMetaForm()
+ self.assertHTMLEqual(
+ str(form['name']),
+ '<textarea id="id_name" rows="10" cols="40" name="name"></textarea>',
+ )
+ self.assertHTMLEqual(
+ str(form['url']),
+ '<input id="id_url" type="text" class="url" name="url" maxlength="40" />',
+ )
+ self.assertHTMLEqual(
+ str(form['slug']),
+ '<input id="id_slug" type="text" name="slug" maxlength="20" />',
+ )
-class TestWidgets(TestCase):
- def test_base_widgets(self):
- frm = TestWidgetForm()
+ def test_label_overrides(self):
+ form = FieldOverridesTroughFormMetaForm()
self.assertHTMLEqual(
- str(frm['name']),
- '<textarea id="id_name" rows="10" cols="40" name="name"></textarea>'
+ str(form['name'].label_tag()),
+ '<label for="id_name">Title:</label>',
)
self.assertHTMLEqual(
- str(frm['url']),
- '<input id="id_url" type="text" class="url" name="url" maxlength="40" />'
+ str(form['url'].label_tag()),
+ '<label for="id_url">The URL:</label>',
)
self.assertHTMLEqual(
- str(frm['slug']),
- '<input id="id_slug" type="text" name="slug" maxlength="20" />'
+ str(form['slug'].label_tag()),
+ '<label for="id_slug">Slug:</label>',
+ )
+
+ def test_help_text_overrides(self):
+ form = FieldOverridesTroughFormMetaForm()
+ self.assertEqual(
+ form['slug'].help_text,
+ 'Watch out! Letters, numbers, underscores and hyphens only.',
)
+ def test_error_messages_overrides(self):
+ form = FieldOverridesTroughFormMetaForm(data={
+ 'name': 'Category',
+ 'url': '/category/',
+ 'slug': '!%#*@',
+ })
+ form.full_clean()
+
+ error = [
+ "Didn't you read the help text? "
+ "We said letters, numbers, underscores and hyphens only!",
+ ]
+ self.assertEqual(form.errors, {'slug': error})
+
class IncompleteCategoryFormWithFields(forms.ModelForm):
"""