2026-05-15 23:03:56 +08:00

89 lines
2.4 KiB
Go

package wheel
import (
"context"
"testing"
"chatapp3-golang/internal/integration"
"chatapp3-golang/internal/model"
)
type fakeWheelGateway struct {
giftCalls []fakeGiftBackpackCall
propsCalls []integration.GivePropsBackpackRequest
switches int
}
type fakeGiftBackpackCall struct {
userID int64
giftID int64
quantity int
}
func (g *fakeWheelGateway) ChangeGoldBalance(context.Context, integration.GoldReceiptCommand) error {
return nil
}
func (g *fakeWheelGateway) GivePropsBackpack(_ context.Context, req integration.GivePropsBackpackRequest) error {
g.propsCalls = append(g.propsCalls, req)
return nil
}
func (g *fakeWheelGateway) IncrGiftBackpack(_ context.Context, userID int64, giftID int64, quantity int) error {
g.giftCalls = append(g.giftCalls, fakeGiftBackpackCall{
userID: userID,
giftID: giftID,
quantity: quantity,
})
return nil
}
func (g *fakeWheelGateway) SwitchUseProps(context.Context, int64, int64) error {
g.switches++
return nil
}
func (g *fakeWheelGateway) ActivateTemporaryBadge(context.Context, int64, int64, int) error {
return nil
}
func (g *fakeWheelGateway) RemoveUserProfileCacheAll(context.Context, int64) error {
return nil
}
func (g *fakeWheelGateway) MapGoldBalance(context.Context, []int64) (map[int64]int64, error) {
return map[int64]int64{}, nil
}
func (g *fakeWheelGateway) GetRoomProfileByUserID(context.Context, int64) (integration.RoomProfile, error) {
return integration.RoomProfile{}, nil
}
func TestGrantResourceRewardRoutesGiftToGiftBackpack(t *testing.T) {
gateway := &fakeWheelGateway{}
service := &Service{java: gateway}
giftID := int64(2044086730826510337)
if err := service.grantResourceReward(context.Background(), &model.WheelDrawRecord{
UserID: 2042274349343506434,
ResourceID: &giftID,
ResourceType: resourceTypeGift,
DurationDays: 7,
}); err != nil {
t.Fatalf("grantResourceReward() error = %v", err)
}
if len(gateway.giftCalls) != 1 {
t.Fatalf("gift backpack calls = %d, want 1", len(gateway.giftCalls))
}
if got := gateway.giftCalls[0]; got.userID != 2042274349343506434 || got.giftID != giftID || got.quantity != 1 {
t.Fatalf("gift backpack call = %+v", got)
}
if len(gateway.propsCalls) != 0 {
t.Fatalf("props backpack calls = %d, want 0", len(gateway.propsCalls))
}
if gateway.switches != 0 {
t.Fatalf("switch use props calls = %d, want 0", gateway.switches)
}
}