Files
gochat/backend/internal/repository/testdb_helper_test.go
T
Rogeeandrogee 2b182f9956 H-300: wire Captain Skills into Web runtime (#48)
* H-300: wire Captain Skills into Web runtime

* H-300: enforce effective model and conservative skill budget

* H-300: fix CI gosec step

* ci: extend golangci-lint timeout

* fix lint findings across backend

* fix(push): resolve delivery protocol blockers

* test(repository): close SQLite test databases

* test(repository): reuse SQLite schema per package

* H-307: restore backend Go cache in CI

* H-307: prefetch modules before cold lint

* H-307: resolve govulncheck security gate

* H-307: build lint with patched Go toolchain

* H-307: clear remaining security scan findings

---------

Co-authored-by: Rogee <rogee@ipao.vip>
2026-08-19 07:08:14 +08:00

43 lines
1013 B
Go

package repository
import (
"database/sql"
"testing"
"github.com/gochat/gochat/internal/model"
)
func TestOpenSQLiteDBReusesSchemaAndIsolatesTests(t *testing.T) {
var firstPool *sql.DB
t.Run("write", func(t *testing.T) {
db := openSQLiteDB(t, []interface{}{&model.Account{}})
var err error
firstPool, err = db.DB()
if err != nil {
t.Fatalf("get sql.DB: %v", err)
}
if err := db.Create(&model.Account{Name: "isolated"}).Error; err != nil {
t.Fatalf("create account: %v", err)
}
})
t.Run("read", func(t *testing.T) {
db := openSQLiteDB(t, []interface{}{&model.Account{}})
secondPool, err := db.DB()
if err != nil {
t.Fatalf("get sql.DB: %v", err)
}
if firstPool != secondPool {
t.Fatal("SQLite schema pool was recreated between tests")
}
var count int64
if err := db.Model(&model.Account{}).Count(&count).Error; err != nil {
t.Fatalf("count accounts: %v", err)
}
if count != 0 {
t.Fatalf("previous test data leaked: got %d accounts", count)
}
})
}