Skip to content

Commit dac8c8f

Browse files
committed
add more tests
1 parent ab72f1d commit dac8c8f

File tree

5 files changed

+100
-8
lines changed

5 files changed

+100
-8
lines changed

sqlx/select_test.go

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package sqlx_test
22

33
import (
4-
"fmt"
54
"os"
65
"strings"
76
"testing"
@@ -152,8 +151,6 @@ func TestSelect(t *testing.T) {
152151
).Sql()
153152

154153
if sql != strings.TrimSuffix(string(expected), "\n") {
155-
fmt.Println(string(expected))
156-
fmt.Println(sql)
157154
t.Fatalf(sql)
158155
}
159156
})
@@ -238,8 +235,70 @@ func TestSelect(t *testing.T) {
238235
).SqlPretty(" ")
239236

240237
if sql != strings.TrimSuffix(string(expected), "\n") {
241-
fmt.Println(string(expected))
242-
fmt.Println(sql)
238+
t.Fatalf(sql)
239+
}
240+
})
241+
})
242+
243+
t.Run("where", func(t *testing.T) {
244+
t.Run("and", func(t *testing.T) {
245+
expected, err := os.ReadFile("./testcases/select/where_and_pretty.sql")
246+
247+
if err != nil {
248+
t.Fatal(err)
249+
}
250+
251+
sql := sqlx.Select(
252+
"a", "b", "c",
253+
).From("test").Where(
254+
"a = b",
255+
).And(
256+
"b = c",
257+
).SqlPretty(" ")
258+
259+
if sql != strings.TrimSuffix(string(expected), "\n") {
260+
t.Fatalf(sql)
261+
}
262+
})
263+
264+
t.Run("or", func(t *testing.T) {
265+
expected, err := os.ReadFile("./testcases/select/where_or_pretty.sql")
266+
267+
if err != nil {
268+
t.Fatal(err)
269+
}
270+
271+
sql := sqlx.Select(
272+
"a", "b", "c",
273+
).From("test").Where(
274+
"a = b",
275+
).Or(
276+
"b = c",
277+
).SqlPretty(" ")
278+
279+
if sql != strings.TrimSuffix(string(expected), "\n") {
280+
t.Fatalf(sql)
281+
}
282+
})
283+
284+
t.Run("and or", func(t *testing.T) {
285+
expected, err := os.ReadFile("./testcases/select/where_and_or_pretty.sql")
286+
287+
if err != nil {
288+
t.Fatal(err)
289+
}
290+
291+
sql := sqlx.Select(
292+
"a", "b", "c",
293+
).From("test").Where(
294+
"c = c",
295+
).And(
296+
sqlx.Where("a = b").And("b = c"),
297+
).And(
298+
sqlx.Where("a = b").Or("b = c"),
299+
).SqlPretty(" ")
300+
301+
if sql != strings.TrimSuffix(string(expected), "\n") {
243302
t.Fatalf(sql)
244303
}
245304
})
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
SELECT
2+
a,
3+
b,
4+
c
5+
FROM test
6+
WHERE c = c
7+
AND (
8+
a = b
9+
AND b = c
10+
)
11+
AND (
12+
a = b
13+
OR b = c
14+
);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
SELECT
2+
a,
3+
b,
4+
c
5+
FROM test
6+
WHERE a = b
7+
AND b = c;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
SELECT
2+
a,
3+
b,
4+
c
5+
FROM test
6+
WHERE a = b
7+
OR b = c;

sqlx/where.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,20 @@ func (self WhereClause) Sql() string {
6262
}
6363

6464
func (self WhereClause) SqlPretty(indent string) string {
65-
parts := strings.Split(self.predicate.Sql(), "\n")
65+
parts := strings.Split(self.predicate.SqlPretty(indent), "\n")
6666

6767
for _, condition := range self.conditions {
68-
parts = append(parts, string(condition.kind)+" "+condition.value.Sql())
68+
parts = append(parts, string(condition.kind)+" "+condition.value.SqlPretty(indent))
6969
}
7070

7171
if self.depth > 0 {
72+
for i := range parts {
73+
parts[i] = indent + parts[i]
74+
}
7275

76+
parts = append([]string{"("}, parts...)
77+
parts = append(parts, ")")
7378
}
7479

75-
return strings.Join(parts, " ")
80+
return strings.Join(parts, "\n")
7681
}

0 commit comments

Comments
 (0)