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) } }) }