2026-06-01 14:06:31 +08:00

51 lines
1.6 KiB
Go

package app
import (
"testing"
"hyapp/pkg/walletmq"
)
func TestRedPacketEventFromWalletMessageKeepsDisplayPayloadFacts(t *testing.T) {
body, err := walletmq.EncodeWalletOutboxMessage(walletmq.WalletOutboxMessage{
AppCode: "lalu",
EventID: "wallet-red-packet-created-1",
EventType: "WalletRedPacketCreated",
TransactionID: "tx-red-packet-1",
CommandID: "cmd-red-packet-1",
UserID: 10001,
PayloadJSON: `{
"packet_id":"VRRP2026052712340001",
"packet_type":"delayed",
"sender_user_id":10001,
"room_id":"9001",
"region_id":310,
"total_amount":15000,
"packet_count":5,
"remaining_amount":15000,
"remaining_count":5,
"status":"waiting_open",
"open_at_ms":1780000000000,
"expires_at_ms":1780086400000
}`,
OccurredAtMS: 1_779_999_700_000,
})
if err != nil {
t.Fatalf("encode wallet message failed: %v", err)
}
event, ok, err := redPacketEventFromWalletMessage(body)
if err != nil || !ok {
t.Fatalf("decode red packet event failed: ok=%t err=%v", ok, err)
}
if event.PacketID != "VRRP2026052712340001" || event.PacketType != "delayed" || event.RoomID != "9001" || event.RegionID != 310 {
t.Fatalf("red packet identity fields mismatch: %+v", event)
}
if event.SenderUserID != 10001 || event.TotalAmount != 15000 || event.TotalCount != 5 || event.RemainingAmount != 15000 || event.RemainingCount != 5 {
t.Fatalf("red packet display facts mismatch: %+v", event)
}
if event.Status != "waiting_open" || event.OpenAtMS != 1_780_000_000_000 || event.ExpiresAtMS != 1_780_086_400_000 || event.CreatedAtMS != 1_779_999_700_000 {
t.Fatalf("red packet timing/status fields mismatch: %+v", event)
}
}