@@ -4,85 +4,39 @@ import (
4
4
"testing"
5
5
6
6
"github.com/grafana/grafana/pkg/tsdb"
7
- . "github.com/smartystreets/goconvey/convey"
8
7
)
9
8
10
9
func TestInfluxdbQueryPart (t * testing.T ) {
11
- Convey ("Influxdb query parts" , t , func () {
12
-
13
- queryContext := & tsdb.TsdbQuery {TimeRange : tsdb .NewTimeRange ("5m" , "now" )}
14
- query := & Query {}
15
-
16
- Convey ("render field " , func () {
17
- part , err := NewQueryPart ("field" , []string {"value" })
18
- So (err , ShouldBeNil )
19
-
20
- res := part .Render (query , queryContext , "value" )
21
- So (res , ShouldEqual , `"value"` )
22
- })
23
-
24
- Convey ("render nested part" , func () {
25
- part , err := NewQueryPart ("derivative" , []string {"10s" })
26
- So (err , ShouldBeNil )
27
-
28
- res := part .Render (query , queryContext , "mean(value)" )
29
- So (res , ShouldEqual , "derivative(mean(value), 10s)" )
30
- })
31
-
32
- Convey ("render bottom" , func () {
33
- part , err := NewQueryPart ("bottom" , []string {"3" })
34
- So (err , ShouldBeNil )
35
-
36
- res := part .Render (query , queryContext , "value" )
37
- So (res , ShouldEqual , "bottom(value, 3)" )
38
- })
39
-
40
- Convey ("render time with $interval" , func () {
41
- part , err := NewQueryPart ("time" , []string {"$interval" })
42
- So (err , ShouldBeNil )
43
-
44
- res := part .Render (query , queryContext , "" )
45
- So (res , ShouldEqual , "time($interval)" )
46
- })
47
-
48
- Convey ("render time with auto" , func () {
49
- part , err := NewQueryPart ("time" , []string {"auto" })
50
- So (err , ShouldBeNil )
51
-
52
- res := part .Render (query , queryContext , "" )
53
- So (res , ShouldEqual , "time($__interval)" )
54
- })
55
-
56
- Convey ("render spread" , func () {
57
- part , err := NewQueryPart ("spread" , []string {})
58
- So (err , ShouldBeNil )
59
-
60
- res := part .Render (query , queryContext , "value" )
61
- So (res , ShouldEqual , `spread(value)` )
62
- })
63
-
64
- Convey ("render suffix" , func () {
65
- part , err := NewQueryPart ("math" , []string {"/ 100" })
66
- So (err , ShouldBeNil )
67
-
68
- res := part .Render (query , queryContext , "mean(value)" )
69
- So (res , ShouldEqual , "mean(value) / 100" )
70
- })
71
-
72
- Convey ("render alias" , func () {
73
- part , err := NewQueryPart ("alias" , []string {"test" })
74
- So (err , ShouldBeNil )
75
-
76
- res := part .Render (query , queryContext , "mean(value)" )
77
- So (res , ShouldEqual , `mean(value) AS "test"` )
78
- })
79
-
80
- Convey ("render count distinct" , func () {
81
- part , err := NewQueryPart ("count" , []string {})
82
- So (err , ShouldBeNil )
83
-
84
- res := part .Render (query , queryContext , "distinct(value)" )
85
- So (res , ShouldEqual , `count(distinct(value))` )
86
- })
87
- })
10
+ tcs := []struct {
11
+ mode string
12
+ input string
13
+ params []string
14
+ expected string
15
+ }{
16
+ {mode : "field" , params : []string {"value" }, input : "value" , expected : `"value"` },
17
+ {mode : "derivative" , params : []string {"10s" }, input : "mean(value)" , expected : `derivative(mean(value), 10s)` },
18
+ {mode : "bottom" , params : []string {"3" }, input : "value" , expected : `bottom(value, 3)` },
19
+ {mode : "time" , params : []string {"$interval" }, input : "" , expected : `time($interval)` },
20
+ {mode : "time" , params : []string {"auto" }, input : "" , expected : `time($__interval)` },
21
+ {mode : "spread" , params : []string {}, input : "value" , expected : `spread(value)` },
22
+ {mode : "math" , params : []string {"/ 100" }, input : "mean(value)" , expected : `mean(value) / 100` },
23
+ {mode : "alias" , params : []string {"test" }, input : "mean(value)" , expected : `mean(value) AS "test"` },
24
+ {mode : "count" , params : []string {}, input : "distinct(value)" , expected : `count(distinct(value))` },
25
+ {mode : "mode" , params : []string {}, input : "value" , expected : `mode(value)` },
26
+ }
27
+
28
+ queryContext := & tsdb.TsdbQuery {TimeRange : tsdb .NewTimeRange ("5m" , "now" )}
29
+ query := & Query {}
30
+
31
+ for _ , tc := range tcs {
32
+ part , err := NewQueryPart (tc .mode , tc .params )
33
+ if err != nil {
34
+ t .Errorf ("Expected NewQueryPart to not return an error. error: %v" , err )
35
+ }
36
+
37
+ res := part .Render (query , queryContext , tc .input )
38
+ if res != tc .expected {
39
+ t .Errorf ("expected %v to render into %s" , tc , tc .expected )
40
+ }
41
+ }
88
42
}
0 commit comments