diff --git a/pkg/tsdb/graphite/graphite_test.go b/pkg/tsdb/graphite/graphite_test.go index bb243fba6fb..ecfd6e32762 100644 --- a/pkg/tsdb/graphite/graphite_test.go +++ b/pkg/tsdb/graphite/graphite_test.go @@ -3,44 +3,59 @@ package graphite import ( "testing" - . "github.com/smartystreets/goconvey/convey" + "github.com/stretchr/testify/assert" ) -func TestGraphiteFunctions(t *testing.T) { - Convey("Testing Graphite Functions", t, func() { - Convey("formatting time range for now", func() { - timeRange := formatTimeRange("now") - So(timeRange, ShouldEqual, "now") - }) +func TestFormatTimeRange(t *testing.T) { + testCases := []struct { + input string + expected string + }{ + {"now", "now"}, + {"now-1m", "-1min"}, + {"now-1M", "-1mon"}, + } - Convey("formatting time range for now-1m", func() { - timeRange := formatTimeRange("now-1m") - So(timeRange, ShouldEqual, "-1min") + for _, tc := range testCases { + t.Run(tc.input, func(t *testing.T) { + tr := formatTimeRange(tc.input) + assert.Equal(t, tc.expected, tr) }) - - Convey("formatting time range for now-1M", func() { - timeRange := formatTimeRange("now-1M") - So(timeRange, ShouldEqual, "-1mon") - }) - - Convey("fix interval format in query for 1m", func() { - timeRange := fixIntervalFormat("aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1m'), 4)") - So(timeRange, ShouldEqual, "aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1min'), 4)") - }) - - Convey("fix interval format in query for 1M", func() { - timeRange := fixIntervalFormat("aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1M'), 4)") - So(timeRange, ShouldEqual, "aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1mon'), 4)") - }) - - Convey("should not override query for 1M", func() { - timeRange := fixIntervalFormat("app.grafana.*.dashboards.views.1M.count") - So(timeRange, ShouldEqual, "app.grafana.*.dashboards.views.1M.count") - }) - - Convey("should not override query for 1m", func() { - timeRange := fixIntervalFormat("app.grafana.*.dashboards.views.1m.count") - So(timeRange, ShouldEqual, "app.grafana.*.dashboards.views.1m.count") - }) - }) + } +} + +func TestFixIntervalFormat(t *testing.T) { + testCases := []struct { + name string + target string + expected string + }{ + { + name: "should transform 1m to graphite unit (1min) when used as interval string", + target: "aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1m'), 4)", + expected: "aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1min'), 4)", + }, + { + name: "should transform 1M to graphite unit (1mon) when used as interval string", + target: "aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1M'), 4)", + expected: "aliasByNode(hitcount(averageSeries(app.grafana.*.dashboards.views.count), '1mon'), 4)", + }, + { + name: "should not transform 1m when not used as interval string", + target: "app.grafana.*.dashboards.views.1m.count", + expected: "app.grafana.*.dashboards.views.1m.count", + }, + { + name: "should not transform 1M when not used as interval string", + target: "app.grafana.*.dashboards.views.1M.count", + expected: "app.grafana.*.dashboards.views.1M.count", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + tr := fixIntervalFormat(tc.target) + assert.Equal(t, tc.expected, tr) + }) + } }