From 3a4c9e1b43ff67b6cf4c59da757666d6ac5ce4a0 Mon Sep 17 00:00:00 2001 From: Loic Bistuer Date: Sun, 25 Jan 2015 22:45:54 +0700 Subject: [PATCH] Cleaned up some forms tests. Thanks Berker Peksag and Tim Graham for the reviews. Refs #24219. --- tests/forms_tests/tests/test_extra.py | 844 ------------------------ tests/forms_tests/tests/test_fields.py | 104 ++- tests/forms_tests/tests/test_forms.py | 99 ++- tests/forms_tests/tests/test_widgets.py | 761 ++++++++++++++++++++- tests/utils_tests/test_encoding.py | 44 +- 5 files changed, 969 insertions(+), 883 deletions(-) delete mode 100644 tests/forms_tests/tests/test_extra.py diff --git a/tests/forms_tests/tests/test_extra.py b/tests/forms_tests/tests/test_extra.py deleted file mode 100644 index ababa689de..0000000000 --- a/tests/forms_tests/tests/test_extra.py +++ /dev/null @@ -1,844 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import datetime - -from django.forms import ( - CharField, DateField, EmailField, FileField, Form, GenericIPAddressField, - HiddenInput, ImageField, MultipleChoiceField, MultiValueField, MultiWidget, - PasswordInput, SelectMultiple, SlugField, SplitDateTimeField, - SplitDateTimeWidget, TextInput, URLField, -) -from django.forms.extras import SelectDateWidget -from django.forms.utils import ErrorList -from django.test import TestCase, override_settings -from django.utils import six -from django.utils import translation -from django.utils.dates import MONTHS_AP -from django.utils.encoding import force_text, smart_text, python_2_unicode_compatible - -from .test_error_messages import AssertFormErrorsMixin - - -class GetDate(Form): - mydate = DateField(widget=SelectDateWidget) - - -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): - self.maxDiff = None - w = SelectDateWidget(years=('2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016')) - - # Rendering the default state. - self.assertHTMLEqual(w.render('mydate', ''), """ - - - -""") - - # Rendering the None or '' values should yield the same output. - self.assertHTMLEqual(w.render('mydate', None), w.render('mydate', '')) - - # Rendering a string value. - self.assertHTMLEqual(w.render('mydate', '2010-04-15'), """ - -""") - - # Rendering a datetime value. - self.assertHTMLEqual(w.render('mydate', datetime.date(2010, 4, 15)), w.render('mydate', '2010-04-15')) - - # Invalid dates should still render the failed date. - self.assertHTMLEqual(w.render('mydate', '2010-02-31'), """ - -""") - - # Rendering with a custom months dict. - w = SelectDateWidget(months=MONTHS_AP, years=('2013',)) - self.assertHTMLEqual(w.render('mydate', ''), """ - - - -""") - - 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.assertIn('