def test_required_month_field(): """Verify a parent field required error is not recorded on the month widget.""" field = DateInputField() with pytest.raises(ValidationError) as err: field.clean(["11", "", "2007"]) assert field.fields[1].widget.errors == [] assert err.value.args[0] == field.error_messages["required"]
def test_incomplete_month_field(): """Verify an incomplete error on the month field is saved in the widget.""" field = DateInputField(require_all_fields=False) with pytest.raises(ValidationError) as err: field.clean(["11", "", "2007"]) assert err.value.args[0][0] in field.fields[1].widget.errors assert err.value.args[0][0] == field.fields[1].error_messages["incomplete"]
def test_invalid_month_field(): """Verify a validation error on the month field is saved in the widget.""" field = DateInputField() with pytest.raises(ValidationError) as err: field.clean(["11", "a", "2007"]) error = err.value.args[0][0].args[0] assert error in field.fields[1].widget.errors assert error == field.fields[1].validators[0].message
def test_compress_invalid_fields(): """Verify compress raises an error on an invalid date.""" day = 30 month = 2 year = 2021 field = DateInputField() with pytest.raises(ValidationError) as err: field.compress([day, month, year]) assert err.value.args[0] == "day is out of range for month"
class DateInputForm(BaseForm): date = DateInputField( label="When was your passport issued?", help_text="For example, 12 11 2007", require_all_fields=False, )
class DateInputForm(forms.Form): date = DateInputField( label="When was your passport issued?", help_text="For example, 12 11 2007", require_all_fields=False, ) def __init__(self, *args, **kwargs): super(DateInputForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.layout = Layout("date", Button("submit", _("Submit"))) self.fields["date"].fields[2].error_messages[ "incomplete"] = "The date your passport was issued must include a year" def valid_layout(self): value = self.cleaned_data["date"] self.helper.layout = Layout( Hidden("date_0", value.day), Hidden("date_1", value.month), Hidden("date_2", value.year), HTML.h2("You answered..."), HTML.table(None, [("Date:", value.strftime("%e %B %Y"))]), Button("continue", "Continue"), )
def test_cleaned_valid_value(): """Verify the Date input field returns a date object.""" date = datetime.date(year=2007, month=12, day=11) field = DateInputField() value = field.clean([date.day, date.month, date.year]) assert value == date
def test_clean_optional_fields_empty(): """Verify clean returns None if the values are not required and not set.""" field = DateInputField(required=False) field.require_all_fields = False value = field.clean(["", "", ""]) assert value is None
def test_compress_optional_fields_empty(): """Verify compress returns None if the values are not required and not set.""" field = DateInputField() field.require_all_fields = False value = field.compress(["", "", ""]) assert value is None
def test_compress_valid_fields(): """Verify compress returns a date.""" date = datetime.date(year=2007, month=12, day=11) field = DateInputField() value = field.compress([date.day, date.month, date.year]) assert value == date