modelRT/test/orm/topologic_test.go

70 lines
1.6 KiB
Go
Raw Normal View History

package orm_test
import (
"context"
"database/sql"
"os"
"regexp"
"testing"
"modelRT/database"
"modelRT/network"
"modelRT/orm"
"github.com/DATA-DOG/go-sqlmock"
"github.com/gofrs/uuid"
"github.com/stretchr/testify/assert"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var (
mock sqlmock.Sqlmock
err error
baseDB *sql.DB
pgClient *gorm.DB
)
func TestMain(m *testing.M) {
baseDB, mock, err = sqlmock.New()
if err != nil {
panic(err)
}
// 把项目使用的DB连接换成sqlmock的DB连接
pgClient, _ = gorm.Open(mysql.New(mysql.Config{
Conn: baseDB,
SkipInitializeWithVersion: true,
DefaultStringSize: 0,
}))
os.Exit(m.Run())
}
func TestUserDao_CreateUser(t *testing.T) {
topologicInfo := &orm.Topologic{
PageID: 1,
UUIDFrom: uuid.FromStringOrNil("70c190f2-8a60-42a9-b143-ec5f87e0aa6b"),
UUIDTo: uuid.FromStringOrNil("70c190f2-8a75-42a9-b166-ec5f87e0aa6b"),
Comment: "test",
Flag: 1,
}
// ud := dao2.NewUserDao(context.TODO())
mock.ExpectBegin()
mock.ExpectExec(regexp.QuoteMeta("INSERT INTO `Topologic`")).
WithArgs(topologicInfo.PageID, topologicInfo.Flag, topologicInfo.UUIDFrom, topologicInfo.UUIDTo, topologicInfo.Comment).
WillReturnResult(sqlmock.NewResult(1, 1))
mock.ExpectCommit()
err := database.CreateTopologicIntoDB(context.TODO(), pgClient, 1, []network.TopologicUUIDCreateInfo{
{
UUIDFrom: uuid.FromStringOrNil("70c190f2-8a60-42a9-b143-ec5f87e0aa6b"),
UUIDTo: uuid.FromStringOrNil("70c190f2-8a75-42a9-b166-ec5f87e0aa6b"),
Comment: "test",
Flag: 1,
},
})
assert.Nil(t, err)
err = mock.ExpectationsWereMet()
assert.Nil(t, err)
}