feat: 完善后端脚手架基础能力
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
//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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user