初始化实现
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package mysqlx
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
drivermysql "gorm.io/driver/mysql"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
type testModel struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
Name string
|
||||
}
|
||||
|
||||
func TestNewWithCustomDialector(t *testing.T) {
|
||||
sqlDB, _, err := sqlmock.New()
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create sqlmock: %v", err)
|
||||
}
|
||||
defer sqlDB.Close()
|
||||
|
||||
client, err := NewDB(
|
||||
WithDialector(drivermysql.New(drivermysql.Config{Conn: sqlDB})),
|
||||
WithLogger(logger.Default.LogMode(logger.Silent)),
|
||||
WithConnectionPool(2, 5, 5*time.Minute, 10*time.Minute),
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
if client.DB() == nil {
|
||||
t.Fatal("expected non-nil DB")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildDSNWithExpandedConfig(t *testing.T) {
|
||||
cfg := defaultConfig()
|
||||
WithDSNUser("testuser")(cfg)
|
||||
WithDSNPassword("password")(cfg)
|
||||
WithDSNNet("tcp")(cfg)
|
||||
WithDSNAddr("127.0.0.1:3306")(cfg)
|
||||
WithDSNDBName("testdb")(cfg)
|
||||
WithDSNParams(map[string]string{"parseTime": "true", "loc": "Local"})(cfg)
|
||||
WithDSNTLSConfig("false")(cfg)
|
||||
dsn, err := buildDSN(cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("buildDSN returned error: %v", err)
|
||||
}
|
||||
if dsn == "" {
|
||||
t.Fatal("expected non-empty DSN")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewWithoutDSNOrDialector(t *testing.T) {
|
||||
_, err := NewDB()
|
||||
if err == nil {
|
||||
t.Fatal("expected error when DSN and Dialector are missing")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user