Files
OpenFlare/backend/plugins/infra/database/plugin_test.go
T
ryan 528240026d chore(lint): unify formatting on golangci-lint fmt (gofumpt), uncap issue reporting, fix gofumpt drift
- make format 现在与 code-check 使用同一格式化器(golangci-lint fmt),消除 goimports -local 与 gofumpt 的格式拉锯
- .golangci.yml 关闭默认 50/3 截断,完整上报所有问题(只增强不弱化)
- 全库 gofumpt 规范化(203 files, 纯格式无行为变更)
2026-08-28 16:31:53 +08:00

62 lines
1.6 KiB
Go

// Copyright 2026 Arctel.net
// SPDX-License-Identifier: Apache-2.0
package database_test
import (
"Wavelet/core"
"Wavelet/core/contracts"
"Wavelet/plugins/infra/database"
"context"
"path/filepath"
"testing"
"github.com/glebarez/sqlite"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gorm.io/gorm"
)
type Item struct {
ID uint64 `gorm:"primaryKey"`
Name string
}
func TestDatabasePlugin(t *testing.T) {
dbPath := filepath.Join(t.TempDir(), "db_test.db")
gdb, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
require.NoError(t, err)
require.NoError(t, gdb.AutoMigrate(&Item{}))
namedPath := filepath.Join(t.TempDir(), "named_test.db")
namedDB, err := gorm.Open(sqlite.Open(namedPath), &gorm.Config{})
require.NoError(t, err)
require.NoError(t, namedDB.AutoMigrate(&Item{}))
p := database.New(
database.WithDB(gdb),
database.WithNamedDB("analytics", namedDB),
)
assert.Equal(t, "database", p.Name())
ctx := core.NewContext(context.Background())
require.NoError(t, p.Apply(ctx))
svc, err := core.Inject[contracts.DBService](ctx)
require.NoError(t, err)
require.NotNil(t, svc)
assert.Equal(t, gdb, svc.GORM())
assert.NotNil(t, svc.DB(context.Background()))
assert.Equal(t, namedDB, svc.Named("analytics"))
assert.Equal(t, gdb, svc.Named("non_existent"))
// Verify DB write
item := Item{ID: 1, Name: "TestItem"}
require.NoError(t, svc.DB(context.Background()).Create(&item).Error)
var retrieved Item
require.NoError(t, svc.GORM().First(&retrieved, 1).Error)
assert.Equal(t, "TestItem", retrieved.Name)
}