49 lines
1.5 KiB
Go
49 lines
1.5 KiB
Go
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
|
|
}
|