package luckygift import ( "context" "testing" "chatapp3-golang/internal/service/regionimgroup" ) func TestPublishHighWinRegionBroadcastsSendsOnlyTenTimesAndAbove(t *testing.T) { broadcaster := &fakeLuckyGiftRegionBroadcaster{} service := &LuckyGiftService{highWinBroadcaster: broadcaster} service.publishHighWinRegionBroadcasts(context.Background(), LuckyGiftDrawRequest{ BusinessID: "biz-1", SysOrigin: "LIKEI", RoomID: 9001, SendUserID: 1001, GiftID: 5001, GiftPrice: 100, GiftNum: 1, }, []LuckyGiftDrawResult{ {ID: "low", AcceptUserID: 2001, RewardNum: 900}, {ID: "high", OrderID: "LG_high", AcceptUserID: 2002, RewardNum: 1000}, }, 90000) if len(broadcaster.requests) != 1 { t.Fatalf("requests = %d, want 1", len(broadcaster.requests)) } req := broadcaster.requests[0] if req.Type != "GAME_LUCKY_GIFT" { t.Fatalf("type = %q, want GAME_LUCKY_GIFT", req.Type) } if req.Data["sendUserId"] != "1001" || req.Data["roomId"] != "9001" || req.Data["multiple"] != int64(10) || req.Data["awardAmount"] != int64(1000) || req.Data["acceptUserId"] != "2002" { t.Fatalf("payload = %+v", req.Data) } } type fakeLuckyGiftRegionBroadcaster struct { requests []regionimgroup.RegionBroadcastRequest } func (f *fakeLuckyGiftRegionBroadcaster) SendRegionBroadcast(_ context.Context, req regionimgroup.RegionBroadcastRequest) (*regionimgroup.RegionBroadcastResponse, error) { f.requests = append(f.requests, req) return ®ionimgroup.RegionBroadcastResponse{Type: req.Type}, nil }