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
예제 #4
0
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"
예제 #5
0
class DateInputForm(BaseForm):

    date = DateInputField(
        label="When was your passport issued?",
        help_text="For example, 12 11 2007",
        require_all_fields=False,
    )
예제 #6
0
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