Files
mysqlx/mysqlx_test.go
T

63 lines
1.3 KiB
Go
Raw Normal View History

2026-06-06 02:09:22 +08:00
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")
}
}