Skip to content

Commit 18e7e10

Browse files
pieternnfx
authored andcommitted
Add tests for the sqlanalytics/api package
1 parent bde8de5 commit 18e7e10

File tree

5 files changed

+330
-0
lines changed

5 files changed

+330
-0
lines changed

sqlanalytics/api/dashboard_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package api
2+
3+
import (
4+
"encoding/json"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestDashboardMarshalUnmarshal(t *testing.T) {
11+
d := Dashboard{
12+
ID: "id",
13+
Name: "name",
14+
Tags: []string{"tag1", "tag2"},
15+
}
16+
17+
out, err := json.Marshal(d)
18+
if err != nil {
19+
t.Fatal(err)
20+
}
21+
22+
var dp Dashboard
23+
if err := json.Unmarshal(out, &dp); err != nil {
24+
t.Fatal(err)
25+
}
26+
27+
assert.Equal(t, d, dp)
28+
}

sqlanalytics/api/query.go

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,16 @@ func (p QueryParameterText) MarshalJSON() ([]byte, error) {
137137
return json.Marshal((localQueryParameter)(p))
138138
}
139139

140+
// UnmarshalJSON clears the type after marshaling.
141+
func (p *QueryParameterText) UnmarshalJSON(b []byte) error {
142+
type localQueryParameter QueryParameterText
143+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
144+
return err
145+
}
146+
p.Type = ""
147+
return nil
148+
}
149+
140150
// QueryParameterNumber ...
141151
type QueryParameterNumber struct {
142152
QueryParameter
@@ -151,6 +161,16 @@ func (p QueryParameterNumber) MarshalJSON() ([]byte, error) {
151161
return json.Marshal((localQueryParameter)(p))
152162
}
153163

164+
// UnmarshalJSON clears the type after marshaling.
165+
func (p *QueryParameterNumber) UnmarshalJSON(b []byte) error {
166+
type localQueryParameter QueryParameterNumber
167+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
168+
return err
169+
}
170+
p.Type = ""
171+
return nil
172+
}
173+
154174
// QueryParameterMultipleValuesOptions ...
155175
type QueryParameterMultipleValuesOptions struct {
156176
Prefix string `json:"prefix"`
@@ -219,6 +239,8 @@ func (p *QueryParameterEnum) UnmarshalJSON(b []byte) error {
219239
p.Values = vs
220240
}
221241

242+
p.Type = ""
243+
p.Value = nil
222244
return nil
223245
}
224246

@@ -283,6 +305,8 @@ func (p *QueryParameterQuery) UnmarshalJSON(b []byte) error {
283305
p.Values = vs
284306
}
285307

308+
p.Type = ""
309+
p.Value = nil
286310
return nil
287311
}
288312

@@ -300,6 +324,16 @@ func (p QueryParameterDate) MarshalJSON() ([]byte, error) {
300324
return json.Marshal((localQueryParameter)(p))
301325
}
302326

327+
// UnmarshalJSON clears the type after marshaling.
328+
func (p *QueryParameterDate) UnmarshalJSON(b []byte) error {
329+
type localQueryParameter QueryParameterDate
330+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
331+
return err
332+
}
333+
p.Type = ""
334+
return nil
335+
}
336+
303337
// QueryParameterDateTime ...
304338
type QueryParameterDateTime struct {
305339
QueryParameter
@@ -314,6 +348,16 @@ func (p QueryParameterDateTime) MarshalJSON() ([]byte, error) {
314348
return json.Marshal((localQueryParameter)(p))
315349
}
316350

351+
// UnmarshalJSON clears the type after marshaling.
352+
func (p *QueryParameterDateTime) UnmarshalJSON(b []byte) error {
353+
type localQueryParameter QueryParameterDateTime
354+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
355+
return err
356+
}
357+
p.Type = ""
358+
return nil
359+
}
360+
317361
// QueryParameterDateTimeSec ...
318362
type QueryParameterDateTimeSec struct {
319363
QueryParameter
@@ -328,6 +372,16 @@ func (p QueryParameterDateTimeSec) MarshalJSON() ([]byte, error) {
328372
return json.Marshal((localQueryParameter)(p))
329373
}
330374

375+
// UnmarshalJSON clears the type after marshaling.
376+
func (p *QueryParameterDateTimeSec) UnmarshalJSON(b []byte) error {
377+
type localQueryParameter QueryParameterDateTimeSec
378+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
379+
return err
380+
}
381+
p.Type = ""
382+
return nil
383+
}
384+
331385
// QueryParameterDateRange ...
332386
type QueryParameterDateRange struct {
333387
QueryParameter
@@ -342,6 +396,16 @@ func (p QueryParameterDateRange) MarshalJSON() ([]byte, error) {
342396
return json.Marshal((localQueryParameter)(p))
343397
}
344398

399+
// UnmarshalJSON clears the type after marshaling.
400+
func (p *QueryParameterDateRange) UnmarshalJSON(b []byte) error {
401+
type localQueryParameter QueryParameterDateRange
402+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
403+
return err
404+
}
405+
p.Type = ""
406+
return nil
407+
}
408+
345409
// QueryParameterDateTimeRange ...
346410
type QueryParameterDateTimeRange struct {
347411
QueryParameter
@@ -356,6 +420,16 @@ func (p QueryParameterDateTimeRange) MarshalJSON() ([]byte, error) {
356420
return json.Marshal((localQueryParameter)(p))
357421
}
358422

423+
// UnmarshalJSON clears the type after marshaling.
424+
func (p *QueryParameterDateTimeRange) UnmarshalJSON(b []byte) error {
425+
type localQueryParameter QueryParameterDateTimeRange
426+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
427+
return err
428+
}
429+
p.Type = ""
430+
return nil
431+
}
432+
359433
// QueryParameterDateTimeSecRange ...
360434
type QueryParameterDateTimeSecRange struct {
361435
QueryParameter
@@ -369,3 +443,13 @@ func (p QueryParameterDateTimeSecRange) MarshalJSON() ([]byte, error) {
369443
type localQueryParameter QueryParameterDateTimeSecRange
370444
return json.Marshal((localQueryParameter)(p))
371445
}
446+
447+
// UnmarshalJSON clears the type after marshaling.
448+
func (p *QueryParameterDateTimeSecRange) UnmarshalJSON(b []byte) error {
449+
type localQueryParameter QueryParameterDateTimeSecRange
450+
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
451+
return err
452+
}
453+
p.Type = ""
454+
return nil
455+
}

sqlanalytics/api/query_test.go

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package api
2+
3+
import (
4+
"encoding/json"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestQueryMarshalUnmarshal(t *testing.T) {
11+
q := Query{
12+
ID: "id",
13+
DataSourceID: "data_source_id",
14+
Name: "name",
15+
Description: "description",
16+
Query: "SELECT 1",
17+
Schedule: &QuerySchedule{
18+
Interval: 1000,
19+
},
20+
Options: &QueryOptions{
21+
Parameters: []interface{}{
22+
&QueryParameterText{
23+
QueryParameter: QueryParameter{
24+
Name: "n1",
25+
Title: "t1",
26+
},
27+
Value: "v1",
28+
},
29+
&QueryParameterNumber{
30+
QueryParameter: QueryParameter{
31+
Name: "n2",
32+
Title: "t2",
33+
},
34+
Value: 1234.5,
35+
},
36+
&QueryParameterEnum{
37+
QueryParameter: QueryParameter{
38+
Name: "n3",
39+
Title: "t3",
40+
},
41+
Values: []string{"single"},
42+
Options: "foo\nbar",
43+
},
44+
&QueryParameterEnum{
45+
QueryParameter: QueryParameter{
46+
Name: "n4",
47+
Title: "t4",
48+
},
49+
Values: []string{"multiple1", "multiple2"},
50+
Options: "foo\nbar",
51+
Multi: &QueryParameterMultipleValuesOptions{
52+
Prefix: "@@@",
53+
Suffix: "###",
54+
Separator: "$$$",
55+
},
56+
},
57+
&QueryParameterQuery{
58+
QueryParameter: QueryParameter{
59+
Name: "n5",
60+
Title: "t5",
61+
},
62+
Values: []string{"single"},
63+
QueryID: "queryID",
64+
},
65+
&QueryParameterQuery{
66+
QueryParameter: QueryParameter{
67+
Name: "n6",
68+
Title: "t6",
69+
},
70+
Values: []string{"multiple1", "multiple2"},
71+
QueryID: "queryID",
72+
Multi: &QueryParameterMultipleValuesOptions{
73+
Prefix: "@@@",
74+
Suffix: "###",
75+
Separator: "$$$",
76+
},
77+
},
78+
&QueryParameterDate{
79+
QueryParameter: QueryParameter{
80+
Name: "n7",
81+
Title: "t7",
82+
},
83+
Value: "xyz",
84+
},
85+
&QueryParameterDateTime{
86+
QueryParameter: QueryParameter{
87+
Name: "n8",
88+
Title: "t8",
89+
},
90+
Value: "xyz",
91+
},
92+
&QueryParameterDateTimeSec{
93+
QueryParameter: QueryParameter{
94+
Name: "n9",
95+
Title: "t9",
96+
},
97+
Value: "xyz",
98+
},
99+
&QueryParameterDateRange{
100+
QueryParameter: QueryParameter{
101+
Name: "n10",
102+
Title: "t10",
103+
},
104+
Value: "xyz",
105+
},
106+
&QueryParameterDateTimeRange{
107+
QueryParameter: QueryParameter{
108+
Name: "n11",
109+
Title: "t11",
110+
},
111+
Value: "xyz",
112+
},
113+
&QueryParameterDateTimeSecRange{
114+
QueryParameter: QueryParameter{
115+
Name: "n12",
116+
Title: "t12",
117+
},
118+
Value: "xyz",
119+
},
120+
},
121+
},
122+
Tags: []string{"tag1", "tag2"},
123+
}
124+
125+
out, err := json.Marshal(q)
126+
if err != nil {
127+
t.Fatal(err)
128+
}
129+
130+
var qp Query
131+
if err := json.Unmarshal(out, &qp); err != nil {
132+
t.Fatal(err)
133+
}
134+
135+
assert.Equal(t, q, qp)
136+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package api
2+
3+
import (
4+
"encoding/json"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestVisualizationMarshalUnmarshal(t *testing.T) {
11+
v := Visualization{
12+
ID: 12345,
13+
QueryID: "queryID",
14+
Type: "type",
15+
Name: "name",
16+
Description: "description",
17+
Options: json.RawMessage("{}"),
18+
}
19+
20+
out, err := json.Marshal(v)
21+
if err != nil {
22+
t.Fatal(err)
23+
}
24+
25+
var vp Visualization
26+
if err := json.Unmarshal(out, &vp); err != nil {
27+
t.Fatal(err)
28+
}
29+
30+
assert.Equal(t, v, vp)
31+
}

0 commit comments

Comments
 (0)