diff --git a/tests/forms_tests/field_tests/__init__.py b/tests/forms_tests/field_tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/forms_tests/field_tests/test_datefield.py b/tests/forms_tests/field_tests/test_datefield.py new file mode 100644 index 0000000000..6b66cb2d52 --- /dev/null +++ b/tests/forms_tests/field_tests/test_datefield.py @@ -0,0 +1,111 @@ +from datetime import date + +from django.forms import DateField, Form, HiddenInput, SelectDateWidget +from django.test import SimpleTestCase, override_settings +from django.utils import translation + + +class GetDate(Form): + mydate = DateField(widget=SelectDateWidget) + + +class DateFieldTest(SimpleTestCase): + + def test_form_field(self): + a = GetDate({'mydate_month': '4', 'mydate_day': '1', 'mydate_year': '2008'}) + self.assertTrue(a.is_valid()) + self.assertEqual(a.cleaned_data['mydate'], date(2008, 4, 1)) + + # As with any widget that implements get_value_from_datadict(), we must + # 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'], 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('