56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
//go:build integration
|
|
|
|
package database
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"skeleton/config"
|
|
"skeleton/models"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func TestPostgresAndMySQL(t *testing.T) {
|
|
tests := []struct {
|
|
driver string
|
|
env string
|
|
}{
|
|
{driver: "postgres", env: "TEST_POSTGRES_DSN"},
|
|
{driver: "mysql", env: "TEST_MYSQL_DSN"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.driver, func(t *testing.T) {
|
|
dsn := os.Getenv(tt.env)
|
|
if dsn == "" {
|
|
t.Skipf("%s 未设置", tt.env)
|
|
}
|
|
cfg := config.DatabaseConfig{
|
|
Driver: tt.driver, DSN: dsn,
|
|
MaxIdleConns: 1, MaxOpenConns: 2, ConnMaxLifetime: 1,
|
|
}
|
|
if err := Init(&cfg, zap.NewNop()); err != nil {
|
|
t.Fatalf("Init() error = %v", err)
|
|
}
|
|
t.Cleanup(func() { _ = Close(); DB = nil })
|
|
if err := DB.AutoMigrate(&models.User{}); err != nil {
|
|
t.Fatalf("AutoMigrate() error = %v", err)
|
|
}
|
|
user := models.User{
|
|
Username: fmt.Sprintf("integration_%s_%d", tt.driver, time.Now().UnixNano()),
|
|
Password: "test-hash",
|
|
}
|
|
if err := DB.Create(&user).Error; err != nil {
|
|
t.Fatalf("Create() error = %v", err)
|
|
}
|
|
if err := DB.Delete(&user).Error; err != nil {
|
|
t.Fatalf("Delete() error = %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|