1
0

dbtest_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package dbtest
  2. import (
  3. "path/filepath"
  4. "testing"
  5. "github.com/mhsanaei/3x-ui/v3/internal/database"
  6. "github.com/mhsanaei/3x-ui/v3/internal/database/model"
  7. )
  8. func TestInitDBGivesEachTestItsOwnDatabase(t *testing.T) {
  9. t.Run("first test writes", func(t *testing.T) {
  10. InitDB(t, filepath.Join(t.TempDir(), "x-ui.db"))
  11. if err := database.GetDB().Create(&model.Setting{Key: "dbtestProbe", Value: "first"}).Error; err != nil {
  12. t.Fatalf("write probe: %v", err)
  13. }
  14. })
  15. t.Run("next test starts clean", func(t *testing.T) {
  16. InitDB(t, filepath.Join(t.TempDir(), "x-ui.db"))
  17. var leaked int64
  18. if err := database.GetDB().Model(&model.Setting{}).Where("key = ?", "dbtestProbe").Count(&leaked).Error; err != nil {
  19. t.Fatalf("count probe: %v", err)
  20. }
  21. if leaked != 0 {
  22. t.Fatalf("database holds %d probe rows written by the previous test; copies must not share state", leaked)
  23. }
  24. var admins int64
  25. if err := database.GetDB().Model(&model.User{}).Count(&admins).Error; err != nil {
  26. t.Fatalf("count users: %v", err)
  27. }
  28. if admins != 1 {
  29. t.Fatalf("users = %d, want the 1 seeded admin a fresh install has", admins)
  30. }
  31. })
  32. }