diff --git a/datetimefield.go b/datetimefield.go index ffc16fb..630992e 100644 --- a/datetimefield.go +++ b/datetimefield.go @@ -59,11 +59,13 @@ func (f *DateTimeFieldInstance) Clean(data Data) error { v := m.rawValueAsString() m.Kind = reflect.Struct if v != nil { - t, err := time.Parse(f.Format, *v) - if err != nil { - return errors.New(f.ErrorMessage) + if *v != "" { + t, err := time.Parse(f.Format, *v) + if err != nil { + return errors.New(f.ErrorMessage) + } + m.Value = t } - m.Value = t m.IsNil = false } } diff --git a/datetimefield_test.go b/datetimefield_test.go index 3faec69..c6de3b0 100644 --- a/datetimefield_test.go +++ b/datetimefield_test.go @@ -99,3 +99,18 @@ func TestInputValidDateTimeFormat(t *testing.T) { t.Error("given: " + obj.Date.String() + ", exptected: " + DefaultDateTimeFormat) } } + +func TestInputDateNotRequired(t *testing.T) { + Form := DefineForm(NewFields( + NewDateTimeField("date", DefaultDateFormat, nil), + )) + reqDate := "" + req, _ := http.NewRequest("POST", "/", strings.NewReader(url.Values{"date": {reqDate}}.Encode())) + req.Header.Add("Content-Type", "application/x-www-form-urlencoded") + + form := Form(req) + if !form.IsValid() { + t.Error("Date required when it should not be.") + return + } +}