From 9e50833e2293aa2734f14f9873abe4f83d03b8c6 Mon Sep 17 00:00:00 2001 From: Loic Bistuer Date: Thu, 4 Apr 2013 02:51:37 +0700 Subject: Fixed #20000 -- Allowed ModelForm meta overrides for label, help_text and error_messages --- tests/model_forms/tests.py | 69 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 10 deletions(-) (limited to 'tests/model_forms') 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']), + '', + ) + self.assertHTMLEqual( + str(form['url']), + '', + ) + self.assertHTMLEqual( + str(form['slug']), + '', + ) -class TestWidgets(TestCase): - def test_base_widgets(self): - frm = TestWidgetForm() + def test_label_overrides(self): + form = FieldOverridesTroughFormMetaForm() self.assertHTMLEqual( - str(frm['name']), - '' + str(form['name'].label_tag()), + '', ) self.assertHTMLEqual( - str(frm['url']), - '' + str(form['url'].label_tag()), + '', ) self.assertHTMLEqual( - str(frm['slug']), - '' + str(form['slug'].label_tag()), + '', ) + 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): """ -- cgit v1.3