diff --git a/src/utils/time.go b/src/utils/time.go new file mode 100644 index 0000000..699ca72 --- /dev/null +++ b/src/utils/time.go @@ -0,0 +1,22 @@ + +package utils + +import ( + "time" +) + +type Time struct { + ts time.Time +} + +func (t *Time) SetTime(value time.Time) { + t.ts = value +} + +func (t Time) GetTime() time.Time { + + if ! t.ts.IsZero() { + return t.ts + } + return time.Now().In(time.UTC) +} diff --git a/src/utils/time_test.go b/src/utils/time_test.go new file mode 100644 index 0000000..d696ca6 --- /dev/null +++ b/src/utils/time_test.go @@ -0,0 +1,26 @@ + +package utils + +import ( + "time" + "testing" + "github.com/stretchr/testify/assert" +) + +func TestTimeGetTimeWithDefaultValue(t *testing.T) { + + var ts Time + + // Assert that time is NOW (+-10 seconds) + assert.InDelta(t, ts.GetTime().Unix(), time.Now().In(time.UTC).Unix(), float64(10)) +} + +func TestTimeGetTimeWithSetTime(t *testing.T) { + + var ts Time + + expected := time.Unix(1048722042, 500) + ts.SetTime(expected) + + assert.Equal(t, expected, ts.GetTime()) +}