1 package exp_test
2
3 import (
4 "testing"
5
6 "github.com/doug-martin/goqu/v9/exp"
7 "github.com/stretchr/testify/suite"
8 )
9
10 type deleteClausesSuite struct {
11 suite.Suite
12 }
13
14 func TestDeleteClausesSuite(t *testing.T) {
15 suite.Run(t, new(deleteClausesSuite))
16 }
17
18 func (dcs *deleteClausesSuite) TestHasFrom() {
19 c := exp.NewDeleteClauses()
20 c2 := c.SetFrom(exp.NewIdentifierExpression("", "test", ""))
21
22 dcs.False(c.HasFrom())
23
24 dcs.True(c2.HasFrom())
25 }
26
27 func (dcs *deleteClausesSuite) TestFrom() {
28 c := exp.NewDeleteClauses()
29 ti := exp.NewIdentifierExpression("", "a", "")
30 c2 := c.SetFrom(ti)
31
32 dcs.Nil(c.From())
33
34 dcs.Equal(ti, c2.From())
35 }
36
37 func (dcs *deleteClausesSuite) TestSetFrom() {
38 c := exp.NewDeleteClauses()
39 ti := exp.NewIdentifierExpression("", "a", "")
40 c2 := c.SetFrom(ti)
41
42 dcs.Nil(c.From())
43
44 dcs.Equal(ti, c2.From())
45 }
46
47 func (dcs *deleteClausesSuite) TestWhere() {
48 w := exp.Ex{"a": 1}
49
50 c := exp.NewDeleteClauses()
51 c2 := c.WhereAppend(w)
52
53 dcs.Nil(c.Where())
54
55 dcs.Equal(exp.NewExpressionList(exp.AndType, w), c2.Where())
56 }
57
58 func (dcs *deleteClausesSuite) TestClearWhere() {
59 w := exp.Ex{"a": 1}
60
61 c := exp.NewDeleteClauses().WhereAppend(w)
62 c2 := c.ClearWhere()
63
64 dcs.Equal(exp.NewExpressionList(exp.AndType, w), c.Where())
65
66 dcs.Nil(c2.Where())
67 }
68
69 func (dcs *deleteClausesSuite) TestWhereAppend() {
70 w := exp.Ex{"a": 1}
71 w2 := exp.Ex{"b": 2}
72
73 c := exp.NewDeleteClauses()
74 c2 := c.WhereAppend(w)
75
76 c3 := c.WhereAppend(w).WhereAppend(w2)
77
78 c4 := c.WhereAppend(w, w2)
79
80 dcs.Nil(c.Where())
81
82 dcs.Equal(exp.NewExpressionList(exp.AndType, w), c2.Where())
83 dcs.Equal(exp.NewExpressionList(exp.AndType, w).Append(w2), c3.Where())
84 dcs.Equal(exp.NewExpressionList(exp.AndType, w, w2), c4.Where())
85 }
86
87 func (dcs *deleteClausesSuite) TestOrder() {
88 oe := exp.NewIdentifierExpression("", "", "a").Desc()
89
90 c := exp.NewDeleteClauses()
91 c2 := c.SetOrder(oe)
92
93 dcs.Nil(c.Order())
94
95 dcs.Equal(exp.NewColumnListExpression(oe), c2.Order())
96 }
97
98 func (dcs *deleteClausesSuite) TestHasOrder() {
99 oe := exp.NewIdentifierExpression("", "", "a").Desc()
100
101 c := exp.NewDeleteClauses()
102 c2 := c.SetOrder(oe)
103
104 dcs.False(c.HasOrder())
105
106 dcs.True(c2.HasOrder())
107 }
108
109 func (dcs *deleteClausesSuite) TestClearOrder() {
110 oe := exp.NewIdentifierExpression("", "", "a").Desc()
111
112 c := exp.NewDeleteClauses().SetOrder(oe)
113 c2 := c.ClearOrder()
114
115 dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
116
117 dcs.Nil(c2.Order())
118 }
119
120 func (dcs *deleteClausesSuite) TestSetOrder() {
121 oe := exp.NewIdentifierExpression("", "", "a").Desc()
122 oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
123
124 c := exp.NewDeleteClauses().SetOrder(oe)
125 c2 := c.SetOrder(oe2)
126
127 dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
128
129 dcs.Equal(exp.NewColumnListExpression(oe2), c2.Order())
130 }
131
132 func (dcs *deleteClausesSuite) TestOrderAppend() {
133 oe := exp.NewIdentifierExpression("", "", "a").Desc()
134 oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
135
136 c := exp.NewDeleteClauses().SetOrder(oe)
137 c2 := c.OrderAppend(oe2)
138
139 dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
140
141 dcs.Equal(exp.NewColumnListExpression(oe, oe2), c2.Order())
142 }
143
144 func (dcs *deleteClausesSuite) TestOrderPrepend() {
145 oe := exp.NewIdentifierExpression("", "", "a").Desc()
146 oe2 := exp.NewIdentifierExpression("", "", "b").Desc()
147
148 c := exp.NewDeleteClauses().SetOrder(oe)
149 c2 := c.OrderPrepend(oe2)
150
151 dcs.Equal(exp.NewColumnListExpression(oe), c.Order())
152
153 dcs.Equal(exp.NewColumnListExpression(oe2, oe), c2.Order())
154 }
155
156 func (dcs *deleteClausesSuite) TestLimit() {
157 l := 1
158
159 c := exp.NewDeleteClauses()
160 c2 := c.SetLimit(l)
161
162 dcs.Nil(c.Limit())
163
164 dcs.Equal(l, c2.Limit())
165 }
166
167 func (dcs *deleteClausesSuite) TestHasLimit() {
168 l := 1
169
170 c := exp.NewDeleteClauses()
171 c2 := c.SetLimit(l)
172
173 dcs.False(c.HasLimit())
174
175 dcs.True(c2.HasLimit())
176 }
177
178 func (dcs *deleteClausesSuite) TestCLearLimit() {
179 l := 1
180
181 c := exp.NewDeleteClauses().SetLimit(l)
182 c2 := c.ClearLimit()
183
184 dcs.True(c.HasLimit())
185
186 dcs.False(c2.HasLimit())
187 }
188
189 func (dcs *deleteClausesSuite) TestSetLimit() {
190 l := 1
191 l2 := 2
192
193 c := exp.NewDeleteClauses().SetLimit(l)
194 c2 := c.SetLimit(2)
195
196 dcs.Equal(l, c.Limit())
197
198 dcs.Equal(l2, c2.Limit())
199 }
200
201 func (dcs *deleteClausesSuite) TestCommonTables() {
202 cte := exp.NewCommonTableExpression(true, "test", newTestAppendableExpression(`SELECT * FROM "foo"`, []interface{}{}))
203
204 c := exp.NewDeleteClauses()
205 c2 := c.CommonTablesAppend(cte)
206
207 dcs.Nil(c.CommonTables())
208
209 dcs.Equal([]exp.CommonTableExpression{cte}, c2.CommonTables())
210 }
211
212 func (dcs *deleteClausesSuite) TestAddCommonTablesAppend() {
213 cte := exp.NewCommonTableExpression(true, "test", testSQLExpression("test_cte"))
214 cte2 := exp.NewCommonTableExpression(true, "test", testSQLExpression("test_cte2"))
215
216 c := exp.NewDeleteClauses().CommonTablesAppend(cte)
217 c2 := c.CommonTablesAppend(cte2)
218
219 dcs.Equal([]exp.CommonTableExpression{cte}, c.CommonTables())
220
221 dcs.Equal([]exp.CommonTableExpression{cte, cte2}, c2.CommonTables())
222 }
223
224 func (dcs *deleteClausesSuite) TestReturning() {
225 cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
226
227 c := exp.NewDeleteClauses()
228 c2 := c.SetReturning(cl)
229
230 dcs.Nil(c.Returning())
231
232 dcs.Equal(cl, c2.Returning())
233 }
234
235 func (dcs *deleteClausesSuite) TestHasReturning() {
236 cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
237
238 c := exp.NewDeleteClauses()
239 c2 := c.SetReturning(cl)
240
241 dcs.False(c.HasReturning())
242
243 dcs.True(c2.HasReturning())
244 }
245
246 func (dcs *deleteClausesSuite) TestSetReturning() {
247 cl := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col"))
248 cl2 := exp.NewColumnListExpression(exp.NewIdentifierExpression("", "", "col2"))
249
250 c := exp.NewDeleteClauses().SetReturning(cl)
251 c2 := c.SetReturning(cl2)
252
253 dcs.Equal(cl, c.Returning())
254
255 dcs.Equal(cl2, c2.Returning())
256 }
257
View as plain text