Skip to content

Commit 83e7ca8

Browse files
authored
Create README.md
1 parent b7ffe40 commit 83e7ca8

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

README.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# sqlmock-rows-helper
2+
transfrom single or multi struct value to (https://github.com/DATA-DOG/go-sqlmock) sqlmock.rows
3+
4+
# usage
5+
<b>support struct value, struct point, struct's slice, struct point's slice </b>
6+
7+
# example
8+
```go
9+
import (
10+
"database/sql"
11+
"testing"
12+
13+
"github.com/DATA-DOG/go-sqlmock"
14+
sqlmock_rows_helper "github.com/Me1onRind/sqlmock-rows-helper"
15+
"github.com/stretchr/testify/assert"
16+
"gorm.io/driver/mysql"
17+
"gorm.io/gorm"
18+
"gorm.io/gorm/logger"
19+
)
20+
21+
type TestTab struct {
22+
ID uint64 `gorm:"column:id"`
23+
Name string `gorm:"column:name"`
24+
CTime uint32 `gorm:"column:ctime"`
25+
MTime uint32 `gorm:"column:mtime"`
26+
}
27+
28+
func newTestDB() (*gorm.DB, sqlmock.Sqlmock, error) {
29+
db, mock, err := sqlmock.New()
30+
if err != nil {
31+
return nil, nil, err
32+
}
33+
mock.ExpectQuery("SELECT VERSION").WillReturnRows(sqlmock.NewRows([]string{"VERSION"}).AddRow("5.7.32"))
34+
gormDB, err := NewDBConnectPoolFRromDB(db)
35+
if err != nil {
36+
return nil, nil, err
37+
}
38+
return gormDB, mock, nil
39+
}
40+
41+
func NewDBConnectPoolFRromDB(db *sql.DB) (*gorm.DB, error) {
42+
return doCreateDBConnectPool(mysql.New(mysql.Config{
43+
Conn: db,
44+
}))
45+
}
46+
47+
func doCreateDBConnectPool(dial gorm.Dialector) (*gorm.DB, error) {
48+
db, err := gorm.Open(dial, &gorm.Config{
49+
Logger: logger.Default.LogMode(logger.Info),
50+
})
51+
if err != nil {
52+
return nil, err
53+
}
54+
55+
sqlDB, err := db.DB()
56+
if err != nil {
57+
return nil, err
58+
}
59+
60+
registerPlugin(db)
61+
62+
return db, err
63+
}
64+
65+
func Test_Select(t *testing.T) {
66+
db, mock, err := newTestDB()
67+
if !assert.Empty(t, err) {
68+
return
69+
}
70+
mock.ExpectQuery("SELECT").WillReturnRows(sqlmock_rows_helper.ModelToRows(
71+
&TestTab{
72+
ID: 1,
73+
Name: "test",
74+
CTime: 1630250445,
75+
MTime: 1630250445,
76+
},
77+
))
78+
if !assert.Empty(t, err) {
79+
return
80+
}
81+
testTab := &TestTab{}
82+
if err := db.WithContext(context.Background()).Where("id = ?", 1).Find(testTab).Error; err != nil {
83+
if !assert.Empty(t, err) {
84+
return
85+
}
86+
}
87+
assert.Equal(t, uint64(1), testTab.ID)
88+
assert.Equal(t, "test", testTab.Name)
89+
assert.Equal(t, uint32(1630250445), testTab.CTime)
90+
}
91+
```

0 commit comments

Comments
 (0)