2026-07-06 12:43:40 +08:00

84 lines
3.1 KiB
Go

package user_test
import (
"context"
"reflect"
"testing"
"hyapp/pkg/appcode"
userdomain "hyapp/services/user-service/internal/domain/user"
userservice "hyapp/services/user-service/internal/service/user"
"hyapp/services/user-service/internal/testutil/mysqltest"
)
func TestListUserIDsAllRegisteredIncludesNonActiveUsers(t *testing.T) {
ctx := appcode.WithContext(context.Background(), "lalu")
repository := mysqltest.NewRepository(t)
for _, user := range []userdomain.User{
{AppCode: "lalu", UserID: 1001, DefaultDisplayUserID: "1001", CurrentDisplayUserID: "1001", Status: userdomain.StatusActive, RegionID: 11, Country: "PH"},
{AppCode: "lalu", UserID: 1002, DefaultDisplayUserID: "1002", CurrentDisplayUserID: "1002", Status: userdomain.StatusDisabled, RegionID: 11, Country: "PH"},
{AppCode: "lalu", UserID: 1003, DefaultDisplayUserID: "1003", CurrentDisplayUserID: "1003", Status: userdomain.StatusBanned, RegionID: 11, Country: "PH"},
} {
repository.PutUser(user)
}
svc := userservice.New(repository)
activeIDs, nextCursor, done, err := svc.ListUserIDs(ctx, userdomain.UserIDPageFilter{
TargetScope: userdomain.UserIDTargetAllActiveUsers,
PageSize: 10,
})
if err != nil {
t.Fatalf("ListUserIDs active failed: %v", err)
}
if !reflect.DeepEqual(activeIDs, []int64{1001}) || nextCursor != 1001 || !done {
t.Fatalf("active query mismatch: ids=%v next=%d done=%v", activeIDs, nextCursor, done)
}
regionIDs, nextCursor, done, err := svc.ListUserIDs(ctx, userdomain.UserIDPageFilter{
TargetScope: userdomain.UserIDTargetRegion,
RegionID: 11,
PageSize: 10,
})
if err != nil {
t.Fatalf("ListUserIDs region failed: %v", err)
}
if !reflect.DeepEqual(regionIDs, []int64{1001}) || nextCursor != 1001 || !done {
t.Fatalf("region query mismatch: ids=%v next=%d done=%v", regionIDs, nextCursor, done)
}
countryIDs, nextCursor, done, err := svc.ListUserIDs(ctx, userdomain.UserIDPageFilter{
TargetScope: userdomain.UserIDTargetCountry,
Country: "PH",
PageSize: 10,
})
if err != nil {
t.Fatalf("ListUserIDs country failed: %v", err)
}
if !reflect.DeepEqual(countryIDs, []int64{1001}) || nextCursor != 1001 || !done {
t.Fatalf("country query mismatch: ids=%v next=%d done=%v", countryIDs, nextCursor, done)
}
registeredIDs, nextCursor, done, err := svc.ListUserIDs(ctx, userdomain.UserIDPageFilter{
TargetScope: userdomain.UserIDTargetAllRegistered,
PageSize: 2,
})
if err != nil {
t.Fatalf("ListUserIDs registered first page failed: %v", err)
}
if !reflect.DeepEqual(registeredIDs, []int64{1001, 1002}) || nextCursor != 1002 || done {
t.Fatalf("registered first page mismatch: ids=%v next=%d done=%v", registeredIDs, nextCursor, done)
}
registeredIDs, nextCursor, done, err = svc.ListUserIDs(ctx, userdomain.UserIDPageFilter{
TargetScope: userdomain.UserIDTargetAllRegistered,
CursorUserID: nextCursor,
PageSize: 2,
})
if err != nil {
t.Fatalf("ListUserIDs registered second page failed: %v", err)
}
if !reflect.DeepEqual(registeredIDs, []int64{1003}) || nextCursor != 1003 || !done {
t.Fatalf("registered second page mismatch: ids=%v next=%d done=%v", registeredIDs, nextCursor, done)
}
}