-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathselect_query_test.go
90 lines (85 loc) · 1.85 KB
/
select_query_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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package gosql_test
import (
"testing"
"github.com/DATA-DOG/go-sqlmock"
)
func TestSelectQueryOne(t *testing.T) {
db, mock, err := getMockDB()
check(t, err)
type T struct {
ID int `gosql:"primary"`
Name string
}
check(t, db.Register(T{}))
control := T{
ID: 5,
Name: "foo",
}
rows := sqlmock.NewRows([]string{"id", "name"})
rows.AddRow(control.ID, control.Name)
mock.ExpectQuery(`^select \* from t where id = \? limit 1$`).WithArgs(control.ID).WillReturnRows(rows)
var test T
check(t, db.Select("*").Where("id = ?", control.ID).To(&test))
check(t, mock.ExpectationsWereMet())
equals(t, control, test)
}
func TestSelectQueryMany(t *testing.T) {
db, mock, err := getMockDB()
check(t, err)
type T struct {
ID int `gosql:"primary"`
Name string
}
check(t, db.Register(T{}))
control := []*T{
&T{
ID: 5,
Name: "foo",
},
&T{
ID: 6,
Name: "bar",
},
}
rows := sqlmock.NewRows([]string{"id", "name"})
for _, c := range control {
rows.AddRow(c.ID, c.Name)
}
mock.ExpectQuery(`^select \* from t limit 10$`).WillReturnRows(rows)
var test []*T
check(t, db.Select("*").Limit(10).To(&test))
check(t, mock.ExpectationsWereMet())
for i := 0; i < len(control); i++ {
equals(t, control[i], test[i])
}
}
func TestSelectQueryManyValues(t *testing.T) {
db, mock, err := getMockDB()
check(t, err)
type T struct {
ID int `gosql:"primary"`
Name string
}
check(t, db.Register(T{}))
control := []T{
T{
ID: 5,
Name: "foo",
},
T{
ID: 6,
Name: "bar",
},
}
rows := sqlmock.NewRows([]string{"id", "name"})
for _, c := range control {
rows.AddRow(c.ID, c.Name)
}
mock.ExpectQuery(`^select \* from t limit 10$`).WillReturnRows(rows)
var test []T
check(t, db.Select("*").Limit(10).To(&test))
check(t, mock.ExpectationsWereMet())
for i := 0; i < len(control); i++ {
equals(t, control[i], test[i])
}
}