| 123456789101112131415161718192021222324252627282930313233343536 |
- package dbtest
- import (
- "path/filepath"
- "testing"
- "github.com/mhsanaei/3x-ui/v3/internal/database"
- "github.com/mhsanaei/3x-ui/v3/internal/database/model"
- )
- func TestInitDBGivesEachTestItsOwnDatabase(t *testing.T) {
- t.Run("first test writes", func(t *testing.T) {
- InitDB(t, filepath.Join(t.TempDir(), "x-ui.db"))
- if err := database.GetDB().Create(&model.Setting{Key: "dbtestProbe", Value: "first"}).Error; err != nil {
- t.Fatalf("write probe: %v", err)
- }
- })
- t.Run("next test starts clean", func(t *testing.T) {
- InitDB(t, filepath.Join(t.TempDir(), "x-ui.db"))
- var leaked int64
- if err := database.GetDB().Model(&model.Setting{}).Where("key = ?", "dbtestProbe").Count(&leaked).Error; err != nil {
- t.Fatalf("count probe: %v", err)
- }
- if leaked != 0 {
- t.Fatalf("database holds %d probe rows written by the previous test; copies must not share state", leaked)
- }
- var admins int64
- if err := database.GetDB().Model(&model.User{}).Count(&admins).Error; err != nil {
- t.Fatalf("count users: %v", err)
- }
- if admins != 1 {
- t.Fatalf("users = %d, want the 1 seeded admin a fresh install has", admins)
- }
- })
- }
|