Skip to content

Commit

Permalink
Add tests for the sqlanalytics/api package
Browse files Browse the repository at this point in the history
  • Loading branch information
pietern committed Apr 21, 2021
1 parent 23ac53e commit 01190ad
Show file tree
Hide file tree
Showing 5 changed files with 330 additions and 0 deletions.
28 changes: 28 additions & 0 deletions sqlanalytics/api/dashboard_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package api

import (
"encoding/json"
"testing"

"github.com/stretchr/testify/assert"
)

func TestDashboardMarshalUnmarshal(t *testing.T) {
d := Dashboard{
ID: "id",
Name: "name",
Tags: []string{"tag1", "tag2"},
}

out, err := json.Marshal(d)
if err != nil {
t.Fatal(err)
}

var dp Dashboard
if err := json.Unmarshal(out, &dp); err != nil {
t.Fatal(err)
}

assert.Equal(t, d, dp)
}
84 changes: 84 additions & 0 deletions sqlanalytics/api/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,16 @@ func (p QueryParameterText) MarshalJSON() ([]byte, error) {
return json.Marshal((localQueryParameter)(p))
}

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterText) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterText
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}

// QueryParameterNumber ...
type QueryParameterNumber struct {
QueryParameter
Expand All @@ -151,6 +161,16 @@ func (p QueryParameterNumber) MarshalJSON() ([]byte, error) {
return json.Marshal((localQueryParameter)(p))
}

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterNumber) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterNumber
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}

// QueryParameterMultipleValuesOptions ...
type QueryParameterMultipleValuesOptions struct {
Prefix string `json:"prefix"`
Expand Down Expand Up @@ -219,6 +239,8 @@ func (p *QueryParameterEnum) UnmarshalJSON(b []byte) error {
p.Values = vs
}

p.Type = ""
p.Value = nil
return nil
}

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

p.Type = ""
p.Value = nil
return nil
}

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

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterDate) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterDate
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}

// QueryParameterDateTime ...
type QueryParameterDateTime struct {
QueryParameter
Expand All @@ -314,6 +348,16 @@ func (p QueryParameterDateTime) MarshalJSON() ([]byte, error) {
return json.Marshal((localQueryParameter)(p))
}

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterDateTime) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterDateTime
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}

// QueryParameterDateTimeSec ...
type QueryParameterDateTimeSec struct {
QueryParameter
Expand All @@ -328,6 +372,16 @@ func (p QueryParameterDateTimeSec) MarshalJSON() ([]byte, error) {
return json.Marshal((localQueryParameter)(p))
}

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterDateTimeSec) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterDateTimeSec
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}

// QueryParameterDateRange ...
type QueryParameterDateRange struct {
QueryParameter
Expand All @@ -342,6 +396,16 @@ func (p QueryParameterDateRange) MarshalJSON() ([]byte, error) {
return json.Marshal((localQueryParameter)(p))
}

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterDateRange) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterDateRange
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}

// QueryParameterDateTimeRange ...
type QueryParameterDateTimeRange struct {
QueryParameter
Expand All @@ -356,6 +420,16 @@ func (p QueryParameterDateTimeRange) MarshalJSON() ([]byte, error) {
return json.Marshal((localQueryParameter)(p))
}

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterDateTimeRange) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterDateTimeRange
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}

// QueryParameterDateTimeSecRange ...
type QueryParameterDateTimeSecRange struct {
QueryParameter
Expand All @@ -369,3 +443,13 @@ func (p QueryParameterDateTimeSecRange) MarshalJSON() ([]byte, error) {
type localQueryParameter QueryParameterDateTimeSecRange
return json.Marshal((localQueryParameter)(p))
}

// UnmarshalJSON clears the type after marshaling.
func (p *QueryParameterDateTimeSecRange) UnmarshalJSON(b []byte) error {
type localQueryParameter QueryParameterDateTimeSecRange
if err := json.Unmarshal(b, (*localQueryParameter)(p)); err != nil {
return err
}
p.Type = ""
return nil
}
136 changes: 136 additions & 0 deletions sqlanalytics/api/query_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
package api

import (
"encoding/json"
"testing"

"github.com/stretchr/testify/assert"
)

func TestQueryMarshalUnmarshal(t *testing.T) {
q := Query{
ID: "id",
DataSourceID: "data_source_id",
Name: "name",
Description: "description",
Query: "SELECT 1",
Schedule: &QuerySchedule{
Interval: 1000,
},
Options: &QueryOptions{
Parameters: []interface{}{
&QueryParameterText{
QueryParameter: QueryParameter{
Name: "n1",
Title: "t1",
},
Value: "v1",
},
&QueryParameterNumber{
QueryParameter: QueryParameter{
Name: "n2",
Title: "t2",
},
Value: 1234.5,
},
&QueryParameterEnum{
QueryParameter: QueryParameter{
Name: "n3",
Title: "t3",
},
Values: []string{"single"},
Options: "foo\nbar",
},
&QueryParameterEnum{
QueryParameter: QueryParameter{
Name: "n4",
Title: "t4",
},
Values: []string{"multiple1", "multiple2"},
Options: "foo\nbar",
Multi: &QueryParameterMultipleValuesOptions{
Prefix: "@@@",
Suffix: "###",
Separator: "$$$",
},
},
&QueryParameterQuery{
QueryParameter: QueryParameter{
Name: "n5",
Title: "t5",
},
Values: []string{"single"},
QueryID: "queryID",
},
&QueryParameterQuery{
QueryParameter: QueryParameter{
Name: "n6",
Title: "t6",
},
Values: []string{"multiple1", "multiple2"},
QueryID: "queryID",
Multi: &QueryParameterMultipleValuesOptions{
Prefix: "@@@",
Suffix: "###",
Separator: "$$$",
},
},
&QueryParameterDate{
QueryParameter: QueryParameter{
Name: "n7",
Title: "t7",
},
Value: "xyz",
},
&QueryParameterDateTime{
QueryParameter: QueryParameter{
Name: "n8",
Title: "t8",
},
Value: "xyz",
},
&QueryParameterDateTimeSec{
QueryParameter: QueryParameter{
Name: "n9",
Title: "t9",
},
Value: "xyz",
},
&QueryParameterDateRange{
QueryParameter: QueryParameter{
Name: "n10",
Title: "t10",
},
Value: "xyz",
},
&QueryParameterDateTimeRange{
QueryParameter: QueryParameter{
Name: "n11",
Title: "t11",
},
Value: "xyz",
},
&QueryParameterDateTimeSecRange{
QueryParameter: QueryParameter{
Name: "n12",
Title: "t12",
},
Value: "xyz",
},
},
},
Tags: []string{"tag1", "tag2"},
}

out, err := json.Marshal(q)
if err != nil {
t.Fatal(err)
}

var qp Query
if err := json.Unmarshal(out, &qp); err != nil {
t.Fatal(err)
}

assert.Equal(t, q, qp)
}
31 changes: 31 additions & 0 deletions sqlanalytics/api/visualization_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package api

import (
"encoding/json"
"testing"

"github.com/stretchr/testify/assert"
)

func TestVisualizationMarshalUnmarshal(t *testing.T) {
v := Visualization{
ID: 12345,
QueryID: "queryID",
Type: "type",
Name: "name",
Description: "description",
Options: json.RawMessage("{}"),
}

out, err := json.Marshal(v)
if err != nil {
t.Fatal(err)
}

var vp Visualization
if err := json.Unmarshal(out, &vp); err != nil {
t.Fatal(err)
}

assert.Equal(t, v, vp)
}
Loading

0 comments on commit 01190ad

Please sign in to comment.