package highwin import ( "context" "testing" "chatapp3-golang/internal/service/regionimgroup" ) func TestSendRegionBroadcastBuildsRequiredPayload(t *testing.T) { broadcaster := &fakeRegionBroadcaster{} err := SendRegionBroadcast(context.Background(), broadcaster, BroadcastEvent{ SysOrigin: "LIKEI", Type: MessageTypeBaishunWin, UserID: 1001, RoomID: "9001", Multiple: 10.5, Amount: 2100, Data: map[string]any{ "gameId": 1146, }, }) if err != nil { t.Fatalf("SendRegionBroadcast() error = %v", err) } if len(broadcaster.requests) != 1 { t.Fatalf("requests = %d, want 1", len(broadcaster.requests)) } req := broadcaster.requests[0] if req.Type != MessageTypeBaishunWin { t.Fatalf("type = %q, want %q", req.Type, MessageTypeBaishunWin) } if req.Data["userId"] != "1001" || req.Data["roomId"] != "9001" || req.Data["winAmount"] != int64(2100) || req.Data["multiple"] != 10.5 || req.Data["msg"] != "1001 play game get x 10.5 win 2100 coins!!!" { t.Fatalf("payload = %+v", req.Data) } } func TestSendRegionBroadcastSkipsBelowThreshold(t *testing.T) { broadcaster := &fakeRegionBroadcaster{} err := SendRegionBroadcast(context.Background(), broadcaster, BroadcastEvent{ Type: MessageTypeLuckyGift, UserID: 1001, RoomID: "9001", Multiple: 9, Amount: 900, }) if err != nil { t.Fatalf("SendRegionBroadcast() error = %v", err) } if len(broadcaster.requests) != 0 { t.Fatalf("requests = %d, want 0", len(broadcaster.requests)) } } type fakeRegionBroadcaster struct { requests []regionimgroup.RegionBroadcastRequest } func (f *fakeRegionBroadcaster) SendRegionBroadcast(_ context.Context, req regionimgroup.RegionBroadcastRequest) (*regionimgroup.RegionBroadcastResponse, error) { f.requests = append(f.requests, req) return ®ionimgroup.RegionBroadcastResponse{ SysOrigin: req.SysOrigin, RegionCode: "AR", GroupID: "@region-ar", Type: req.Type, }, nil }