package feed import ( "encoding/json" "testing" "time" ) func TestTimeUnmarshallInvalidData(t *testing.T) { test := []byte(`{}`) var val Time if err := json.Unmarshal(test, &val); err == nil { t.Errorf("got \"%v\", exp error", val) } } func TestTimeUnmarshallInvalidString(t *testing.T) { test := []byte(`"2020-"`) exp := "invalid time: \"2020-\"" var val Time if err := json.Unmarshal(test, &val); err == nil { t.Errorf("got \"%v\", exp error", val) } else if err.Error() != exp { t.Errorf("got \"%s\", exp \"%s\"", err.Error(), exp) } } func TestTimeUnmarshallInvalidTime(t *testing.T) { test := []byte(`"2020-99-99T99:99Z"`) var val Time if err := json.Unmarshal(test, &val); err == nil { t.Errorf("got \"%v\", exp error", val) } } func TestTimeString(t *testing.T) { tests := []struct { val string exp string } { { "\"2021-06-09T20:15Z\"", "2021-06-09T20:15:00Z" }, } for _, test := range(tests) { t.Run(test.val, func(t *testing.T) { var gotTime Time if err := json.Unmarshal([]byte(test.val), &gotTime); err != nil { t.Error(err) return } got, err := time.Time(gotTime).MarshalText() if err != nil { t.Error(err) return } if string(got) != test.exp { t.Errorf("got \"%s\", exp \"%s\"", string(got), test.exp) } }) } }