summaryrefslogtreecommitdiff
path: root/internal/utils/time_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/utils/time_test.go')
-rw-r--r--internal/utils/time_test.go77
1 files changed, 77 insertions, 0 deletions
diff --git a/internal/utils/time_test.go b/internal/utils/time_test.go
new file mode 100644
index 000000000..a589d6d88
--- /dev/null
+++ b/internal/utils/time_test.go
@@ -0,0 +1,77 @@
+package utils
+
+import (
+ "github.com/stretchr/testify/assert"
+ "testing"
+ "time"
+)
+
+func TestShouldParseDurationString(t *testing.T) {
+ duration, err := ParseDurationString("1h")
+ assert.NoError(t, err)
+ assert.Equal(t, 60*time.Minute, duration)
+}
+
+func TestShouldParseDurationStringAllUnits(t *testing.T) {
+ duration, err := ParseDurationString("1y")
+ assert.NoError(t, err)
+ assert.Equal(t, Year, duration)
+
+ duration, err = ParseDurationString("1M")
+ assert.NoError(t, err)
+ assert.Equal(t, Month, duration)
+
+ duration, err = ParseDurationString("1w")
+ assert.NoError(t, err)
+ assert.Equal(t, Week, duration)
+
+ duration, err = ParseDurationString("1d")
+ assert.NoError(t, err)
+ assert.Equal(t, Day, duration)
+
+ duration, err = ParseDurationString("1h")
+ assert.NoError(t, err)
+ assert.Equal(t, Hour, duration)
+
+ duration, err = ParseDurationString("1s")
+ assert.NoError(t, err)
+ assert.Equal(t, time.Second, duration)
+}
+
+func TestShouldParseSecondsString(t *testing.T) {
+ duration, err := ParseDurationString("100")
+ assert.NoError(t, err)
+ assert.Equal(t, 100*time.Second, duration)
+}
+
+func TestShouldNotParseDurationStringWithOutOfOrderQuantitiesAndUnits(t *testing.T) {
+ duration, err := ParseDurationString("h1")
+ assert.EqualError(t, err, "could not convert the input string of h1 into a duration")
+ assert.Equal(t, time.Duration(0), duration)
+}
+
+func TestShouldNotParseBadDurationString(t *testing.T) {
+ duration, err := ParseDurationString("10x")
+ assert.EqualError(t, err, "could not convert the input string of 10x into a duration")
+ assert.Equal(t, time.Duration(0), duration)
+}
+
+func TestShouldNotParseDurationStringWithMultiValueUnits(t *testing.T) {
+ duration, err := ParseDurationString("10ms")
+ assert.EqualError(t, err, "could not convert the input string of 10ms into a duration")
+ assert.Equal(t, time.Duration(0), duration)
+}
+
+func TestShouldNotParseDurationStringWithLeadingZero(t *testing.T) {
+ duration, err := ParseDurationString("005h")
+ assert.EqualError(t, err, "could not convert the input string of 005h into a duration")
+ assert.Equal(t, time.Duration(0), duration)
+}
+
+func TestShouldTimeIntervalsMakeSense(t *testing.T) {
+ assert.Equal(t, Hour, time.Minute*60)
+ assert.Equal(t, Day, Hour*24)
+ assert.Equal(t, Week, Day*7)
+ assert.Equal(t, Year, Day*365)
+ assert.Equal(t, Month, Year/12)
+}