-
Notifications
You must be signed in to change notification settings - Fork 3
/
insert_test.go
75 lines (63 loc) · 1.69 KB
/
insert_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
package sqlbuilder
import (
"reflect"
"testing"
)
func TestInsertMySQL(t *testing.T) {
query, args, _ := Insert().
Dialect(MySQL).
Into("customers").
Set("name", "John").
Set("phone", "555").
SetSQL("created_at", "NOW()").
Build()
expectedQuery := "INSERT INTO customers (name, phone, created_at) VALUES (?, ?, NOW())"
if query != expectedQuery {
t.Errorf("bad query: %s", query)
}
expectedArgs := []interface{}{"John", "555"}
if !reflect.DeepEqual(args, expectedArgs) {
t.Errorf("bad args: %v", args)
}
}
func TestInsertPostgres(t *testing.T) {
query, args, _ := Insert().
Dialect(Postgres).
Into("customers").
Set("name", "John").
Set("phone", "555").
SetSQL("created_at", "NOW()").
Build()
expectedQuery := `INSERT INTO customers (name, phone, created_at) VALUES ($1, $2, NOW())`
if query != expectedQuery {
t.Errorf("bad query: %s", query)
}
expectedArgs := []interface{}{"John", "555"}
if !reflect.DeepEqual(args, expectedArgs) {
t.Errorf("bad args: %v", args)
}
}
func TestInsertReturningPostgres(t *testing.T) {
var id, one uint
query, args, dest := Insert().
Dialect(Postgres).
Into("customers").
Set("name", "John").
Set("phone", "555").
SetSQL("created_at", "NOW()").
Return("id", &id).
Return("1", &one).
Build()
expectedQuery := `INSERT INTO customers (name, phone, created_at) VALUES ($1, $2, NOW()) RETURNING id, 1`
if query != expectedQuery {
t.Errorf("bad query: %s", query)
}
expectedArgs := []interface{}{"John", "555"}
if !reflect.DeepEqual(args, expectedArgs) {
t.Errorf("bad args: %v", args)
}
expectedDest := []interface{}{&id, &one}
if !reflect.DeepEqual(dest, expectedDest) {
t.Errorf("bad dest: %v", dest)
}
}