From cdf520ee86e7613f29421fb2c99646ce00899b3d Mon Sep 17 00:00:00 2001 From: Preston Timmons Date: Sat, 6 Apr 2013 11:44:58 -0500 Subject: Modified forms_tests to work with unittest2 discovery. --- tests/forms_tests/tests/__init__.py | 22 +- tests/forms_tests/tests/error_messages.py | 263 ---- tests/forms_tests/tests/extra.py | 807 ----------- tests/forms_tests/tests/fields.py | 1232 ---------------- tests/forms_tests/tests/forms.py | 1848 ------------------------ tests/forms_tests/tests/formsets.py | 1091 -------------- tests/forms_tests/tests/input_formats.py | 866 ----------- tests/forms_tests/tests/media.py | 907 ------------ tests/forms_tests/tests/models.py | 0 tests/forms_tests/tests/regressions.py | 151 -- tests/forms_tests/tests/test_error_messages.py | 263 ++++ tests/forms_tests/tests/test_extra.py | 807 +++++++++++ tests/forms_tests/tests/test_fields.py | 1232 ++++++++++++++++ tests/forms_tests/tests/test_forms.py | 1848 ++++++++++++++++++++++++ tests/forms_tests/tests/test_formsets.py | 1091 ++++++++++++++ tests/forms_tests/tests/test_input_formats.py | 866 +++++++++++ tests/forms_tests/tests/test_media.py | 907 ++++++++++++ tests/forms_tests/tests/test_regressions.py | 151 ++ tests/forms_tests/tests/test_util.py | 67 + tests/forms_tests/tests/test_validators.py | 39 + tests/forms_tests/tests/test_widgets.py | 1124 ++++++++++++++ tests/forms_tests/tests/util.py | 67 - tests/forms_tests/tests/validators.py | 39 - tests/forms_tests/tests/widgets.py | 1124 -------------- 24 files changed, 8406 insertions(+), 8406 deletions(-) delete mode 100644 tests/forms_tests/tests/error_messages.py delete mode 100644 tests/forms_tests/tests/extra.py delete mode 100644 tests/forms_tests/tests/fields.py delete mode 100644 tests/forms_tests/tests/forms.py delete mode 100644 tests/forms_tests/tests/formsets.py delete mode 100644 tests/forms_tests/tests/input_formats.py delete mode 100644 tests/forms_tests/tests/media.py delete mode 100644 tests/forms_tests/tests/models.py delete mode 100644 tests/forms_tests/tests/regressions.py create mode 100644 tests/forms_tests/tests/test_error_messages.py create mode 100644 tests/forms_tests/tests/test_extra.py create mode 100644 tests/forms_tests/tests/test_fields.py create mode 100644 tests/forms_tests/tests/test_forms.py create mode 100644 tests/forms_tests/tests/test_formsets.py create mode 100644 tests/forms_tests/tests/test_input_formats.py create mode 100644 tests/forms_tests/tests/test_media.py create mode 100644 tests/forms_tests/tests/test_regressions.py create mode 100644 tests/forms_tests/tests/test_util.py create mode 100644 tests/forms_tests/tests/test_validators.py create mode 100644 tests/forms_tests/tests/test_widgets.py delete mode 100644 tests/forms_tests/tests/util.py delete mode 100644 tests/forms_tests/tests/validators.py delete mode 100644 tests/forms_tests/tests/widgets.py (limited to 'tests/forms_tests') diff --git a/tests/forms_tests/tests/__init__.py b/tests/forms_tests/tests/__init__.py index 6b4771912f..3fb537ef41 100644 --- a/tests/forms_tests/tests/__init__.py +++ b/tests/forms_tests/tests/__init__.py @@ -1,21 +1,21 @@ from __future__ import absolute_import -from .error_messages import (FormsErrorMessagesTestCase, +from .test_error_messages import (FormsErrorMessagesTestCase, ModelChoiceFieldErrorMessagesTestCase) -from .extra import FormsExtraTestCase, FormsExtraL10NTestCase -from .fields import FieldsTests -from .forms import FormsTestCase -from .formsets import (FormsFormsetTestCase, FormsetAsFooTests, +from .test_extra import FormsExtraTestCase, FormsExtraL10NTestCase +from .test_fields import FieldsTests +from .test_forms import FormsTestCase +from .test_formsets import (FormsFormsetTestCase, FormsetAsFooTests, TestIsBoundBehavior, TestEmptyFormSet) -from .input_formats import (LocalizedTimeTests, CustomTimeInputFormatsTests, +from .test_input_formats import (LocalizedTimeTests, CustomTimeInputFormatsTests, SimpleTimeFormatTests, LocalizedDateTests, CustomDateInputFormatsTests, SimpleDateFormatTests, LocalizedDateTimeTests, CustomDateTimeInputFormatsTests, SimpleDateTimeFormatTests) -from .media import FormsMediaTestCase, StaticFormsMediaTestCase +from .test_media import FormsMediaTestCase, StaticFormsMediaTestCase from .tests import (TestTicket12510, ModelFormCallableModelDefault, FormsModelTestCase, RelatedModelFormTests) -from .regressions import FormsRegressionsTestCase -from .util import FormsUtilTestCase -from .validators import TestFieldWithValidators -from .widgets import (FormsWidgetTestCase, FormsI18NWidgetsTestCase, +from .test_regressions import FormsRegressionsTestCase +from .test_util import FormsUtilTestCase +from .test_validators import TestFieldWithValidators +from .test_widgets import (FormsWidgetTestCase, FormsI18NWidgetsTestCase, WidgetTests, LiveWidgetTests, ClearableFileInputTests) diff --git a/tests/forms_tests/tests/error_messages.py b/tests/forms_tests/tests/error_messages.py deleted file mode 100644 index af047daf64..0000000000 --- a/tests/forms_tests/tests/error_messages.py +++ /dev/null @@ -1,263 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import absolute_import, unicode_literals - -from django.core.files.uploadedfile import SimpleUploadedFile -from django.forms import * -from django.test import TestCase -from django.utils.safestring import mark_safe -from django.utils.encoding import python_2_unicode_compatible - - -class AssertFormErrorsMixin(object): - def assertFormErrors(self, expected, the_callable, *args, **kwargs): - try: - the_callable(*args, **kwargs) - self.fail("Testing the 'clean' method on %s failed to raise a ValidationError.") - except ValidationError as e: - self.assertEqual(e.messages, expected) - -class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin): - def test_charfield(self): - e = { - 'required': 'REQUIRED', - 'min_length': 'LENGTH %(show_value)s, MIN LENGTH %(limit_value)s', - 'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s', - } - f = CharField(min_length=5, max_length=10, error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['LENGTH 4, MIN LENGTH 5'], f.clean, '1234') - self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901') - - def test_integerfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - 'min_value': 'MIN VALUE IS %(limit_value)s', - 'max_value': 'MAX VALUE IS %(limit_value)s', - } - f = IntegerField(min_value=5, max_value=10, error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc') - self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4') - self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11') - - def test_floatfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - 'min_value': 'MIN VALUE IS %(limit_value)s', - 'max_value': 'MAX VALUE IS %(limit_value)s', - } - f = FloatField(min_value=5, max_value=10, error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc') - self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4') - self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11') - - def test_decimalfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - 'min_value': 'MIN VALUE IS %(limit_value)s', - 'max_value': 'MAX VALUE IS %(limit_value)s', - 'max_digits': 'MAX DIGITS IS %s', - 'max_decimal_places': 'MAX DP IS %s', - 'max_whole_digits': 'MAX DIGITS BEFORE DP IS %s', - } - f = DecimalField(min_value=5, max_value=10, error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc') - self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4') - self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11') - - f2 = DecimalField(max_digits=4, decimal_places=2, error_messages=e) - self.assertFormErrors(['MAX DIGITS IS 4'], f2.clean, '123.45') - self.assertFormErrors(['MAX DP IS 2'], f2.clean, '1.234') - self.assertFormErrors(['MAX DIGITS BEFORE DP IS 2'], f2.clean, '123.4') - - def test_datefield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - } - f = DateField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc') - - def test_timefield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - } - f = TimeField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc') - - def test_datetimefield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - } - f = DateTimeField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc') - - def test_regexfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - 'min_length': 'LENGTH %(show_value)s, MIN LENGTH %(limit_value)s', - 'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s', - } - f = RegexField(r'^\d+$', min_length=5, max_length=10, error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abcde') - self.assertFormErrors(['LENGTH 4, MIN LENGTH 5'], f.clean, '1234') - self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901') - - def test_emailfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - 'min_length': 'LENGTH %(show_value)s, MIN LENGTH %(limit_value)s', - 'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s', - } - f = EmailField(min_length=8, max_length=10, error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abcdefgh') - self.assertFormErrors(['LENGTH 7, MIN LENGTH 8'], f.clean, 'a@b.com') - self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, 'aye@bee.com') - - def test_filefield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - 'missing': 'MISSING', - 'empty': 'EMPTY FILE', - } - f = FileField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc') - self.assertFormErrors(['EMPTY FILE'], f.clean, SimpleUploadedFile('name', None)) - self.assertFormErrors(['EMPTY FILE'], f.clean, SimpleUploadedFile('name', '')) - - def test_urlfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID', - } - f = URLField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID'], f.clean, 'abc.c') - - def test_booleanfield(self): - e = { - 'required': 'REQUIRED', - } - f = BooleanField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - - def test_choicefield(self): - e = { - 'required': 'REQUIRED', - 'invalid_choice': '%(value)s IS INVALID CHOICE', - } - f = ChoiceField(choices=[('a', 'aye')], error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['b IS INVALID CHOICE'], f.clean, 'b') - - def test_multiplechoicefield(self): - e = { - 'required': 'REQUIRED', - 'invalid_choice': '%(value)s IS INVALID CHOICE', - 'invalid_list': 'NOT A LIST', - } - f = MultipleChoiceField(choices=[('a', 'aye')], error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['NOT A LIST'], f.clean, 'b') - self.assertFormErrors(['b IS INVALID CHOICE'], f.clean, ['b']) - - def test_splitdatetimefield(self): - e = { - 'required': 'REQUIRED', - 'invalid_date': 'INVALID DATE', - 'invalid_time': 'INVALID TIME', - } - f = SplitDateTimeField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID DATE', 'INVALID TIME'], f.clean, ['a', 'b']) - - def test_ipaddressfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID IP ADDRESS', - } - f = IPAddressField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0') - - def test_generic_ipaddressfield(self): - e = { - 'required': 'REQUIRED', - 'invalid': 'INVALID IP ADDRESS', - } - f = GenericIPAddressField(error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0') - - def test_subclassing_errorlist(self): - class TestForm(Form): - first_name = CharField() - last_name = CharField() - birthday = DateField() - - def clean(self): - raise ValidationError("I like to be awkward.") - - @python_2_unicode_compatible - class CustomErrorList(util.ErrorList): - def __str__(self): - return self.as_divs() - - def as_divs(self): - if not self: return '' - return mark_safe('
%s
' % ''.join(['

%s

' % e for e in self])) - - # This form should print errors the default way. - form1 = TestForm({'first_name': 'John'}) - self.assertHTMLEqual(str(form1['last_name'].errors), '') - self.assertHTMLEqual(str(form1.errors['__all__']), '') - - # This one should wrap error groups in the customized way. - form2 = TestForm({'first_name': 'John'}, error_class=CustomErrorList) - self.assertHTMLEqual(str(form2['last_name'].errors), '

This field is required.

') - self.assertHTMLEqual(str(form2.errors['__all__']), '

I like to be awkward.

') - - -class ModelChoiceFieldErrorMessagesTestCase(TestCase, AssertFormErrorsMixin): - def test_modelchoicefield(self): - # Create choices for the model choice field tests below. - from forms_tests.models import ChoiceModel - c1 = ChoiceModel.objects.create(pk=1, name='a') - c2 = ChoiceModel.objects.create(pk=2, name='b') - c3 = ChoiceModel.objects.create(pk=3, name='c') - - # ModelChoiceField - e = { - 'required': 'REQUIRED', - 'invalid_choice': 'INVALID CHOICE', - } - f = ModelChoiceField(queryset=ChoiceModel.objects.all(), error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['INVALID CHOICE'], f.clean, '4') - - # ModelMultipleChoiceField - e = { - 'required': 'REQUIRED', - 'invalid_choice': '%s IS INVALID CHOICE', - 'list': 'NOT A LIST OF VALUES', - } - f = ModelMultipleChoiceField(queryset=ChoiceModel.objects.all(), error_messages=e) - self.assertFormErrors(['REQUIRED'], f.clean, '') - self.assertFormErrors(['NOT A LIST OF VALUES'], f.clean, '3') - self.assertFormErrors(['4 IS INVALID CHOICE'], f.clean, ['4']) diff --git a/tests/forms_tests/tests/extra.py b/tests/forms_tests/tests/extra.py deleted file mode 100644 index 427d099bb2..0000000000 --- a/tests/forms_tests/tests/extra.py +++ /dev/null @@ -1,807 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import absolute_import, unicode_literals - -import datetime - -from django.forms import * -from django.forms.extras import SelectDateWidget -from django.forms.util import ErrorList -from django.test import TestCase -from django.test.utils import override_settings -from django.utils import six -from django.utils import translation -from django.utils.encoding import force_text, smart_text, python_2_unicode_compatible - -from .error_messages import AssertFormErrorsMixin - - -class GetDate(Form): - mydate = DateField(widget=SelectDateWidget) - -class GetNotRequiredDate(Form): - mydate = DateField(widget=SelectDateWidget, required=False) - -class GetDateShowHiddenInitial(Form): - mydate = DateField(widget=SelectDateWidget, show_hidden_initial=True) - -class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): - ############### - # Extra stuff # - ############### - - # The forms library comes with some extra, higher-level Field and Widget - def test_selectdate(self): - w = SelectDateWidget(years=('2007','2008','2009','2010','2011','2012','2013','2014','2015','2016')) - self.assertHTMLEqual(w.render('mydate', ''), """ - - - -""") - self.assertHTMLEqual(w.render('mydate', None), w.render('mydate', '')) - - self.assertHTMLEqual(w.render('mydate', '2010-04-15'), """ - -""") - - # Accepts a datetime or a string: - self.assertHTMLEqual(w.render('mydate', datetime.date(2010, 4, 15)), w.render('mydate', '2010-04-15')) - - # Invalid dates still render the failed date: - self.assertHTMLEqual(w.render('mydate', '2010-02-31'), """ - -""") - - # Using a SelectDateWidget in a form: - w = SelectDateWidget(years=('2007','2008','2009','2010','2011','2012','2013','2014','2015','2016'), required=False) - self.assertHTMLEqual(w.render('mydate', ''), """ - -""") - self.assertHTMLEqual(w.render('mydate', '2010-04-15'), """ - -""") - - a = GetDate({'mydate_month':'4', 'mydate_day':'1', 'mydate_year':'2008'}) - self.assertTrue(a.is_valid()) - self.assertEqual(a.cleaned_data['mydate'], datetime.date(2008, 4, 1)) - - # As with any widget that implements get_value_from_datadict, - # we must be prepared to accept the input from the "as_hidden" - # rendering as well. - - self.assertHTMLEqual(a['mydate'].as_hidden(), '') - - b = GetDate({'mydate':'2008-4-1'}) - self.assertTrue(b.is_valid()) - self.assertEqual(b.cleaned_data['mydate'], datetime.date(2008, 4, 1)) - - # Invalid dates shouldn't be allowed - c = GetDate({'mydate_month':'2', 'mydate_day':'31', 'mydate_year':'2010'}) - self.assertFalse(c.is_valid()) - self.assertEqual(c.errors, {'mydate': ['Enter a valid date.']}) - - # label tag is correctly associated with month dropdown - d = GetDate({'mydate_month':'1', 'mydate_day':'1', 'mydate_year':'2010'}) - self.assertTrue('