-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfilterql_converters_test.go
88 lines (83 loc) · 1.93 KB
/
filterql_converters_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package filterql
import (
"testing"
"github.com/google/go-cmp/cmp"
)
func TestConvertQueryStrToSql(t *testing.T) {
testTable := []struct {
testName string
queryStr string
filters map[string]string
expQuery string
expParams []interface{}
}{
{
testName: "Only one filter with no logical or comparison operator",
queryStr: "name=yanik%20blake",
filters: map[string]string{
"name": "string",
},
expQuery: "name = ?",
expParams: []interface{}{
"yanik blake",
},
},
{
testName: "Only one filter with no logical or comparison operator",
queryStr: "first_name=yanik",
filters: map[string]string{
"first_name": "string",
},
expQuery: "first_name = ?",
expParams: []interface{}{
"yanik",
},
},
{
testName: "Multiple Filters",
queryStr: "first_name=yanik:eq:and&last_name=black:eq&height=172.5",
filters: map[string]string{
"first_name": "string",
"last_name": "string",
"height": "float",
},
expQuery: "first_name = ? AND last_name = ? AND height = ?",
expParams: []interface{}{
"yanik",
"black",
float64(172.5),
},
},
{
testName: "Duplicate filters",
queryStr: "age=18:gte:and&age=28:lt",
filters: map[string]string{
"age": "int",
},
expQuery: "age >= ? AND age < ?",
expParams: []interface{}{
int64(18),
int64(28),
},
},
{
testName: "Without Value",
queryStr: "age",
filters: map[string]string{
"age": "int",
},
expQuery: "age = ?",
expParams: []interface{}{
int64(0),
},
},
}
//run tests
for _, data := range testTable {
result, params := ConvertQueryStrToSql(data.queryStr, data.filters)
if !cmp.Equal(data.expQuery, result) || !cmp.Equal(data.expParams, params) {
t.Errorf("\n[Query String] input -> %s \ngot -> %v \nexp -> %v", data.queryStr, result, data.expQuery)
t.Errorf("\n[Parameter ] \ngot -> %v \nexp -> %v", params, data.expParams)
}
}
}