-
Notifications
You must be signed in to change notification settings - Fork 0
/
sql_generator_test.go
48 lines (46 loc) · 1.25 KB
/
sql_generator_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
package sql_generator
import (
"github.com/crayoon/sql_generator/join"
"github.com/crayoon/sql_generator/where"
"reflect"
"testing"
)
func TestQuery_ToSql(t *testing.T) {
t.Run("test-normal-sql", func(t *testing.T) {
sql, params := NewSql(func(q *Query) {
q.Where("id", "=", 1)
q.Delete()
}, "table_name")
if !reflect.DeepEqual(sql, "select * from table_name where id = ? limit 1 offset 0 ") {
t.Errorf("fail sql = %v", sql)
}
if !reflect.DeepEqual(params, []interface{}{
1,
}) {
t.Errorf("fail params = %v", params)
}
})
t.Run("test-join-sql", func(t *testing.T) {
sql, params := NewSql(func(q *Query) {
q.Join(&join.Joins{
Typ: join.InnerJoin,
Table: "table_name2 as t2",
}, func(join *join.Joins) {
join.On("t1.id", "=", "t2.table_name_id")
join.Where(func(w *where.Wheres) {
w.Where("t2.status", "=", 1)
})
})
q.Limit(0, 10)
q.Select("q1.id, q2.id")
}, "table_name as t1")
if !reflect.DeepEqual(sql, "select q1.id, q2.id from table_name as t1 inner join table_name2 as t2 on t1.id = t2.table_name_id and t2.status = ? limit 10 offset 0 ") {
t.Errorf("fail sql = %v", sql)
}
if !reflect.DeepEqual(params, []interface{}{
1,
}) {
t.Errorf("fail params = %v", params)
}
})
}