feat: game lobby service
This commit is contained in:
@@ -28,9 +28,13 @@ var expectedNotificationTypeCatalog = []string{
|
||||
"lobby.application.submitted",
|
||||
"lobby.membership.approved",
|
||||
"lobby.membership.rejected",
|
||||
"lobby.membership.blocked",
|
||||
"lobby.invite.created",
|
||||
"lobby.invite.redeemed",
|
||||
"lobby.invite.expired",
|
||||
"lobby.race_name.registration_eligible",
|
||||
"lobby.race_name.registered",
|
||||
"lobby.race_name.registration_denied",
|
||||
}
|
||||
|
||||
var expectedNotificationCatalog = map[string]notificationCatalogExpectation{
|
||||
@@ -82,6 +86,12 @@ var expectedNotificationCatalog = map[string]notificationCatalogExpectation{
|
||||
payloadSchema: "LobbyMembershipRejectedPayload",
|
||||
requiredFields: []string{"game_id", "game_name"},
|
||||
},
|
||||
"lobby.membership.blocked": {
|
||||
producer: "game_lobby",
|
||||
audienceKind: "user",
|
||||
payloadSchema: "LobbyMembershipBlockedPayload",
|
||||
requiredFields: []string{"game_id", "game_name", "membership_user_id", "membership_user_name", "reason"},
|
||||
},
|
||||
"lobby.invite.created": {
|
||||
producer: "game_lobby",
|
||||
audienceKind: "user",
|
||||
@@ -100,6 +110,24 @@ var expectedNotificationCatalog = map[string]notificationCatalogExpectation{
|
||||
payloadSchema: "LobbyInviteExpiredPayload",
|
||||
requiredFields: []string{"game_id", "game_name", "invitee_user_id", "invitee_name"},
|
||||
},
|
||||
"lobby.race_name.registration_eligible": {
|
||||
producer: "game_lobby",
|
||||
audienceKind: "user",
|
||||
payloadSchema: "LobbyRaceNameRegistrationEligiblePayload",
|
||||
requiredFields: []string{"game_id", "game_name", "race_name", "eligible_until_ms"},
|
||||
},
|
||||
"lobby.race_name.registered": {
|
||||
producer: "game_lobby",
|
||||
audienceKind: "user",
|
||||
payloadSchema: "LobbyRaceNameRegisteredPayload",
|
||||
requiredFields: []string{"race_name"},
|
||||
},
|
||||
"lobby.race_name.registration_denied": {
|
||||
producer: "game_lobby",
|
||||
audienceKind: "user",
|
||||
payloadSchema: "LobbyRaceNameRegistrationDeniedPayload",
|
||||
requiredFields: []string{"game_id", "game_name", "race_name", "reason"},
|
||||
},
|
||||
}
|
||||
|
||||
const expectedNotificationCatalogTable = `| ` + "`notification_type`" + ` | Producer | Audience | Channels | Required ` + "`payload_json`" + ` fields |
|
||||
@@ -112,9 +140,13 @@ const expectedNotificationCatalogTable = `| ` + "`notification_type`" + ` | Prod
|
||||
| ` + "`lobby.application.submitted`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | private owner (` + "`audience_kind=user`" + `) or public admins (` + "`audience_kind=admin_email`" + `) | private: ` + "`push+email`" + `, public: ` + "`email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`applicant_user_id`" + `, ` + "`applicant_name`" + ` |
|
||||
| ` + "`lobby.membership.approved`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | applicant user (` + "`audience_kind=user`" + `) | ` + "`push+email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + ` |
|
||||
| ` + "`lobby.membership.rejected`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | applicant user (` + "`audience_kind=user`" + `) | ` + "`push+email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + ` |
|
||||
| ` + "`lobby.membership.blocked`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | private-game owner (` + "`audience_kind=user`" + `) | ` + "`push+email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`membership_user_id`" + `, ` + "`membership_user_name`" + `, ` + "`reason`" + ` |
|
||||
| ` + "`lobby.invite.created`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | invited user (` + "`audience_kind=user`" + `) | ` + "`push+email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`inviter_user_id`" + `, ` + "`inviter_name`" + ` |
|
||||
| ` + "`lobby.invite.redeemed`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | private-game owner (` + "`audience_kind=user`" + `) | ` + "`push+email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`invitee_user_id`" + `, ` + "`invitee_name`" + ` |
|
||||
| ` + "`lobby.invite.expired`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | private-game owner (` + "`audience_kind=user`" + `) | ` + "`email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`invitee_user_id`" + `, ` + "`invitee_name`" + ` |`
|
||||
| ` + "`lobby.invite.expired`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | private-game owner (` + "`audience_kind=user`" + `) | ` + "`email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`invitee_user_id`" + `, ` + "`invitee_name`" + ` |
|
||||
| ` + "`lobby.race_name.registration_eligible`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | capable member (` + "`audience_kind=user`" + `) | ` + "`push+email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`race_name`" + `, ` + "`eligible_until_ms`" + ` |
|
||||
| ` + "`lobby.race_name.registered`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | registering user (` + "`audience_kind=user`" + `) | ` + "`push+email`" + ` | ` + "`race_name`" + ` |
|
||||
| ` + "`lobby.race_name.registration_denied`" + ` | ` + "`Game Lobby`" + ` (` + "`game_lobby`" + `) | incapable member (` + "`audience_kind=user`" + `) | ` + "`email`" + ` | ` + "`game_id`" + `, ` + "`game_name`" + `, ` + "`race_name`" + `, ` + "`reason`" + ` |`
|
||||
|
||||
var expectedSharedDocumentationSnippets = []string{
|
||||
"`lobby.application.submitted` keeps one stable `notification_type` and one stable `payload_json` shape",
|
||||
@@ -581,6 +613,8 @@ func TestGatewayREADMEFreezesExactPushVocabulary(t *testing.T) {
|
||||
"- `lobby.membership.rejected`",
|
||||
"- `lobby.invite.created`",
|
||||
"- `lobby.invite.redeemed`",
|
||||
"- `lobby.race_name.registration_eligible`",
|
||||
"- `lobby.race_name.registered`",
|
||||
}, "\n"),
|
||||
)
|
||||
require.Contains(
|
||||
|
||||
Reference in New Issue
Block a user