51 lines
1.6 KiB
Go
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)
|
|
}
|
|
}
|