1
0

client_group_bulk_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package service
  2. import (
  3. "testing"
  4. "github.com/mhsanaei/3x-ui/v3/internal/database"
  5. "github.com/mhsanaei/3x-ui/v3/internal/database/model"
  6. )
  7. func TestAddToGroupReportsOnlyChangedRecordsIncludingNull(t *testing.T) {
  8. setupConflictDB(t)
  9. db := database.GetDB()
  10. if err := db.Create(&model.ClientGroup{Name: "paid"}).Error; err != nil {
  11. t.Fatalf("create group: %v", err)
  12. }
  13. rows := []model.ClientRecord{
  14. {Email: "same@example", UUID: "same", Group: "paid"},
  15. {Email: "other@example", UUID: "other", Group: "free"},
  16. {Email: "null@example", UUID: "null"},
  17. }
  18. if err := db.Create(&rows).Error; err != nil {
  19. t.Fatalf("create clients: %v", err)
  20. }
  21. if err := db.Model(&model.ClientRecord{}).Where("email = ?", "null@example").UpdateColumn("group_name", nil).Error; err != nil {
  22. t.Fatalf("set NULL group: %v", err)
  23. }
  24. got, err := (&ClientService{}).AddToGroup([]string{"same@example", "other@example", "null@example", "missing@example"}, "paid")
  25. if err != nil {
  26. t.Fatalf("AddToGroup: %v", err)
  27. }
  28. if got != 2 {
  29. t.Fatalf("affected = %d, want 2 changed records", got)
  30. }
  31. got, err = (&ClientService{}).AddToGroup([]string{"same@example", "other@example", "null@example"}, "paid")
  32. if err != nil {
  33. t.Fatalf("second AddToGroup: %v", err)
  34. }
  35. if got != 0 {
  36. t.Fatalf("second affected = %d, want 0", got)
  37. }
  38. }