diff --git a/events/duration.go b/events/duration.go index 7952265d..00094709 100644 --- a/events/duration.go +++ b/events/duration.go @@ -15,7 +15,7 @@ func (duration *DurationSeconds) UnmarshalJSON(data []byte) error { return err } - *duration = DurationSeconds(time.Duration(seconds) * time.Second) + *duration = DurationSeconds(time.Duration(seconds * float64(time.Second))) return nil } @@ -34,7 +34,7 @@ func (duration *DurationMinutes) UnmarshalJSON(data []byte) error { return err } - *duration = DurationMinutes(time.Duration(minutes) * time.Minute) + *duration = DurationMinutes(time.Duration(minutes * float64(time.Minute))) return nil } diff --git a/events/duration_test.go b/events/duration_test.go new file mode 100644 index 00000000..712be18c --- /dev/null +++ b/events/duration_test.go @@ -0,0 +1,27 @@ +package events + +import ( + "encoding/json" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestDurationSecondsKeepsFraction(t *testing.T) { + var d DurationSeconds + require.NoError(t, json.Unmarshal([]byte("1.5"), &d)) + require.Equal(t, 1500*time.Millisecond, time.Duration(d)) + + require.NoError(t, json.Unmarshal([]byte("36"), &d)) + require.Equal(t, 36*time.Second, time.Duration(d)) +} + +func TestDurationMinutesKeepsFraction(t *testing.T) { + var d DurationMinutes + require.NoError(t, json.Unmarshal([]byte("1.5"), &d)) + require.Equal(t, 90*time.Second, time.Duration(d)) + + require.NoError(t, json.Unmarshal([]byte("60"), &d)) + require.Equal(t, 60*time.Minute, time.Duration(d)) +}