Scert/backend/internal/database/database_test.go

36 lines
980 B
Go

package database
import (
"context"
"database/sql"
"path/filepath"
"testing"
"git.pcux.cn/xuans/Scert/backend/internal/config"
)
func TestOpenAndMigrateSQLite(t *testing.T) {
dir := t.TempDir()
cfg := config.Default(dir)
cfg.Database.DSN = filepath.Join(dir, "data", "test.db")
db, err := Open(context.Background(), cfg.Database)
if err != nil {
t.Fatalf("打开 SQLite 失败:%v", err)
}
defer db.Close()
if err := Migrate(context.Background(), db.DB, "sqlite"); err != nil {
t.Fatalf("SQLite 迁移失败:%v", err)
}
var count int
if err := db.DB.QueryRow("SELECT COUNT(*) FROM schema_migrations").Scan(&count); err != nil {
t.Fatalf("读取迁移版本失败:%v", err)
}
if count != 2 {
t.Fatalf("迁移版本数量错误:%d", count)
}
var autoRenew bool
if err := db.DB.QueryRow("SELECT auto_renew FROM domains LIMIT 1").Scan(&autoRenew); err != nil && err != sql.ErrNoRows {
t.Fatalf("检查域名选项字段失败:%v", err)
}
}