@@ -9,36 +9,40 @@ import (
9
9
10
10
func TestBuildWhereDocumentClause_EmptyInput_TRUEClause (t * testing.T ) {
11
11
var whereDocs []cg.WhereDocument
12
- whereClause , err := BuildWhereDocumentClause (whereDocs , "AND" )
12
+ whereClause , a , err := BuildWhereDocumentClause (whereDocs , "AND" )
13
13
assert .NoError (t , err )
14
14
assert .Equal (t , "TRUE" , whereClause )
15
+ assert .Empty (t , a )
15
16
}
16
17
17
18
func TestBuildWhereDocumentClause_SingleEqualsCondition_ReturnsCorrectClause (t * testing.T ) {
18
19
whereDocs := []cg.WhereDocument {
19
20
{Operator : cg .WhereDocumentOperatorEquals , Value : "test" },
20
21
}
21
- whereClause , err := BuildWhereDocumentClause (whereDocs , "AND" )
22
+ whereClause , a , err := BuildWhereDocumentClause (whereDocs , "AND" )
22
23
assert .NoError (t , err )
23
- assert .Equal (t , "document = 'test'" , whereClause )
24
+ assert .Equal (t , "document = ?" , whereClause )
25
+ assert .Equal (t , []any {"test" }, a )
24
26
}
25
27
26
28
func TestBuildWhereDocumentClause_SingleContainsCondition_ReturnsCorrectClause (t * testing.T ) {
27
29
whereDocs := []cg.WhereDocument {
28
30
{Operator : cg .WhereDocumentOperatorContains , Value : "test" },
29
31
}
30
- whereClause , err := BuildWhereDocumentClause (whereDocs , "AND" )
32
+ whereClause , a , err := BuildWhereDocumentClause (whereDocs , "AND" )
31
33
assert .NoError (t , err )
32
- assert .Equal (t , "document LIKE '%test%'" , whereClause )
34
+ assert .Equal (t , "document LIKE ?" , whereClause )
35
+ assert .Equal (t , []any {"%test%" }, a )
33
36
}
34
37
35
38
func TestBuildWhereDocumentClause_SingleNotContainsCondition_ReturnsCorrectClause (t * testing.T ) {
36
39
whereDocs := []cg.WhereDocument {
37
40
{Operator : cg .WhereDocumentOperatorNotContains , Value : "test" },
38
41
}
39
- whereClause , err := BuildWhereDocumentClause (whereDocs , "AND" )
42
+ whereClause , a , err := BuildWhereDocumentClause (whereDocs , "AND" )
40
43
assert .NoError (t , err )
41
- assert .Equal (t , "document NOT LIKE '%test%'" , whereClause )
44
+ assert .Equal (t , "document NOT LIKE ?" , whereClause )
45
+ assert .Equal (t , []any {"%test%" }, a )
42
46
}
43
47
44
48
func TestBuildWhereDocumentClause_AndCondition_ReturnsCorrectClauses (t * testing.T ) {
@@ -51,9 +55,10 @@ func TestBuildWhereDocumentClause_AndCondition_ReturnsCorrectClauses(t *testing.
51
55
},
52
56
},
53
57
}
54
- whereClause , err := BuildWhereDocumentClause (whereDocs , "AND" )
58
+ whereClause , a , err := BuildWhereDocumentClause (whereDocs , "AND" )
55
59
assert .NoError (t , err )
56
- assert .Equal (t , "(document = 'test1' AND document = 'test2')" , whereClause )
60
+ assert .Equal (t , "(document = ? AND document = ?)" , whereClause )
61
+ assert .Equal (t , []any {"test1" , "test2" }, a )
57
62
}
58
63
59
64
func TestBuildWhereDocumentClause_OrCondition_ReturnsCorrectClauses (t * testing.T ) {
@@ -66,9 +71,10 @@ func TestBuildWhereDocumentClause_OrCondition_ReturnsCorrectClauses(t *testing.T
66
71
},
67
72
},
68
73
}
69
- whereClause , err := BuildWhereDocumentClause (whereDocs , "OR" )
74
+ whereClause , a , err := BuildWhereDocumentClause (whereDocs , "OR" )
70
75
assert .NoError (t , err )
71
- assert .Equal (t , "(document = 'test1' OR document = 'test2')" , whereClause )
76
+ assert .Equal (t , "(document = ? OR document = ?)" , whereClause )
77
+ assert .Equal (t , []any {"test1" , "test2" }, a )
72
78
}
73
79
74
80
func TestBuildWhereDocumentClause_Nested_ReturnsCorrectClauses (t * testing.T ) {
@@ -101,7 +107,44 @@ func TestBuildWhereDocumentClause_Nested_ReturnsCorrectClauses(t *testing.T) {
101
107
},
102
108
},
103
109
}
104
- whereClause , err := BuildWhereDocumentClause (whereDocs , "AND" )
110
+ whereClause , a , err := BuildWhereDocumentClause (whereDocs , "AND" )
105
111
assert .NoError (t , err )
106
- assert .Equal (t , "(document = 'test1' OR document = 'test2') AND (document = 'test3' AND document = 'test4') AND ((document = 'test5' AND document = 'test6') AND document = 'test7')" , whereClause )
112
+ assert .Equal (t , "(document = ? OR document = ?) AND (document = ? AND document = ?) AND ((document = ? AND document = ?) AND document = ?)" , whereClause )
113
+ assert .Equal (t , []any {"test1" , "test2" , "test3" , "test4" , "test5" , "test6" , "test7" }, a )
114
+ }
115
+
116
+ func TestBuildWhereDocumentClauseIndexed_Nested_ReturnsCorrectClauses (t * testing.T ) {
117
+ whereDocs := []cg.WhereDocument {
118
+ {
119
+ Operator : cg .WhereDocumentOperatorOr ,
120
+ WhereDocuments : []cg.WhereDocument {
121
+ {Operator : cg .WhereDocumentOperatorEquals , Value : "test1" },
122
+ {Operator : cg .WhereDocumentOperatorEquals , Value : "test2" },
123
+ },
124
+ },
125
+ {
126
+ Operator : cg .WhereDocumentOperatorAnd ,
127
+ WhereDocuments : []cg.WhereDocument {
128
+ {Operator : cg .WhereDocumentOperatorEquals , Value : "test3" },
129
+ {Operator : cg .WhereDocumentOperatorEquals , Value : "test4" },
130
+ },
131
+ },
132
+ {
133
+ Operator : cg .WhereDocumentOperatorAnd ,
134
+ WhereDocuments : []cg.WhereDocument {
135
+ {
136
+ Operator : cg .WhereDocumentOperatorAnd ,
137
+ WhereDocuments : []cg.WhereDocument {
138
+ {Operator : cg .WhereDocumentOperatorEquals , Value : "test5" },
139
+ {Operator : cg .WhereDocumentOperatorEquals , Value : "test6" },
140
+ },
141
+ },
142
+ {Operator : cg .WhereDocumentOperatorEquals , Value : "test7" },
143
+ },
144
+ },
145
+ }
146
+ whereClause , a , err := BuildWhereDocumentClauseIndexed (whereDocs , "AND" , 3 )
147
+ assert .NoError (t , err )
148
+ assert .Equal (t , "(document = $3 OR document = $4) AND (document = $5 AND document = $6) AND ((document = $7 AND document = $8) AND document = $9)" , whereClause )
149
+ assert .Equal (t , []any {"test1" , "test2" , "test3" , "test4" , "test5" , "test6" , "test7" }, a )
107
150
}
0 commit comments