diff --git a/pkg/services/ngalert/models/image.go b/pkg/services/ngalert/models/image.go index 8c2d8cefd05..07c8578cdd9 100644 --- a/pkg/services/ngalert/models/image.go +++ b/pkg/services/ngalert/models/image.go @@ -27,7 +27,7 @@ func (i *Image) ExtendDuration(d time.Duration) { // HasExpired returns true if the image has expired. func (i *Image) HasExpired() bool { - return time.Now().After(i.ExpiresAt) + return timeNow().After(i.ExpiresAt) } // HasPath returns true if the image has a path on disk. diff --git a/pkg/services/ngalert/models/image_test.go b/pkg/services/ngalert/models/image_test.go index 5c8380cff04..7f9177fa8d6 100644 --- a/pkg/services/ngalert/models/image_test.go +++ b/pkg/services/ngalert/models/image_test.go @@ -4,6 +4,7 @@ import ( "testing" "time" + "github.com/benbjohnson/clock" "github.com/stretchr/testify/assert" ) @@ -20,12 +21,18 @@ func TestImage_ExtendDuration(t *testing.T) { } func TestImage_HasExpired(t *testing.T) { + oldTimeNow := timeNow + timeNow = clock.NewMock().Now + t.Cleanup(func() { + timeNow = oldTimeNow + }) + var i Image - i.ExpiresAt = time.Now().Add(time.Minute) + i.ExpiresAt = timeNow().Add(time.Minute) assert.False(t, i.HasExpired()) - i.ExpiresAt = time.Now() - assert.True(t, i.HasExpired()) - i.ExpiresAt = time.Now().Add(-time.Minute) + i.ExpiresAt = timeNow() + assert.False(t, i.HasExpired()) + i.ExpiresAt = timeNow().Add(-time.Minute) assert.True(t, i.HasExpired()) } diff --git a/pkg/services/ngalert/models/time.go b/pkg/services/ngalert/models/time.go new file mode 100644 index 00000000000..4e7b1a91163 --- /dev/null +++ b/pkg/services/ngalert/models/time.go @@ -0,0 +1,8 @@ +package models + +import "time" + +var ( + // timeNow is an equivalent time.Now() that can be replaced in tests + timeNow = time.Now +)