package gamemanagement import ( "testing" gamev1 "hyapp.local/api/proto/game/v1" ) func TestPlatformFromProtoReturnsCallbackSecret(t *testing.T) { const secret = "yomi-or-lingxian-secret" got := platformFromProto(&gamev1.GamePlatform{ PlatformCode: "yomi", CallbackSecret: secret, CallbackSecretSet: true, }) if got.CallbackSecret != secret { t.Fatalf("CallbackSecret = %q, want %q", got.CallbackSecret, secret) } if !got.CallbackSecretSet { t.Fatal("CallbackSecretSet = false, want true") } } func TestRoomRPSConfigRequestRequiresFourGiftTiers(t *testing.T) { _, err := (roomRPSConfigRequest{ Status: "active", ChallengeTimeoutMS: 600000, RevealCountdownMS: 3000, StakeGifts: []roomRPSStakeGiftReq{ {GiftID: 1001, Enabled: true, SortOrder: 1}, {GiftID: 1002, Enabled: true, SortOrder: 2}, {GiftID: 1003, Enabled: true, SortOrder: 3}, }, }).toProto() if err == nil { t.Fatal("toProto must reject room rps config without exactly four gift tiers") } } func TestRoomRPSConfigRequestDefaultsOpenConfig(t *testing.T) { got, err := (roomRPSConfigRequest{ StakeGifts: []roomRPSStakeGiftReq{ {GiftID: 1001, Enabled: true}, {GiftID: 1002, Enabled: true}, {GiftID: 1003, Enabled: true}, {GiftID: 1004, Enabled: true}, }, }).toProto() if err != nil { t.Fatalf("toProto failed: %v", err) } if got.GetStatus() != "active" || got.GetChallengeTimeoutMs() != 600000 || got.GetRevealCountdownMs() != 3000 { t.Fatalf("room rps default config mismatch: %+v", got) } if got.GetStakeGifts()[3].GetSortOrder() != 4 { t.Fatalf("default sort order mismatch: %+v", got.GetStakeGifts()) } } func TestRoomRPSChallengeFromProtoKeepsLargeIDsAsStrings(t *testing.T) { got := roomRPSChallengeFromProto(&gamev1.RoomRPSChallenge{ ChallengeId: "rps-1", StakeGiftId: 9007199254740993, Initiator: &gamev1.RoomRPSPlayer{UserId: 9007199254740995, Gesture: "rock"}, WinnerUserId: 9007199254740995, }) if got.StakeGiftID != "9007199254740993" || got.Initiator.UserID != "9007199254740995" || got.WinnerUserID != "9007199254740995" { t.Fatalf("large IDs must stay string-safe in admin JSON: %+v", got) } }