fix: game order api & tests
This commit is contained in:
@@ -58,6 +58,20 @@ func TestGameOpenAPISpecFreezesResponseSchemas(t *testing.T) {
|
||||
status: http.StatusOK,
|
||||
wantRef: "#/components/schemas/StateResponse",
|
||||
},
|
||||
{
|
||||
name: "put order",
|
||||
path: "/api/v1/order",
|
||||
method: http.MethodPut,
|
||||
status: http.StatusAccepted,
|
||||
wantRef: "#/components/schemas/UserGamesOrder",
|
||||
},
|
||||
{
|
||||
name: "get order",
|
||||
path: "/api/v1/order",
|
||||
method: http.MethodGet,
|
||||
status: http.StatusOK,
|
||||
wantRef: "#/components/schemas/UserGamesOrder",
|
||||
},
|
||||
{
|
||||
name: "healthz probe",
|
||||
path: "/healthz",
|
||||
@@ -77,6 +91,86 @@ func TestGameOpenAPISpecFreezesResponseSchemas(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGameOpenAPISpecFreezesEmptyResponses(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
doc := loadOpenAPISpec(t)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
path string
|
||||
method string
|
||||
status int
|
||||
}{
|
||||
{
|
||||
name: "command accepted",
|
||||
path: "/api/v1/command",
|
||||
method: http.MethodPut,
|
||||
status: http.StatusAccepted,
|
||||
},
|
||||
{
|
||||
name: "get order no content",
|
||||
path: "/api/v1/order",
|
||||
method: http.MethodGet,
|
||||
status: http.StatusNoContent,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
operation := getOpenAPIOperation(t, doc, tt.path, tt.method)
|
||||
require.NotNil(t, operation.Responses, "operation must declare responses")
|
||||
response := operation.Responses.Status(tt.status)
|
||||
require.NotNil(t, response, "operation must declare %d response", tt.status)
|
||||
require.NotNil(t, response.Value, "%d response must have a value", tt.status)
|
||||
require.Empty(t, response.Value.Content, "%d response must carry no body", tt.status)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGameOpenAPISpecFreezesUserGamesOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
doc := loadOpenAPISpec(t)
|
||||
schema := componentSchemaRef(t, doc, "UserGamesOrder")
|
||||
|
||||
assertRequiredFields(t, schema, "game_id", "updatedAt", "cmd")
|
||||
|
||||
gameIDSchema := schema.Value.Properties["game_id"]
|
||||
require.NotNil(t, gameIDSchema, "UserGamesOrder.game_id schema must exist")
|
||||
require.Equal(t, "uuid", gameIDSchema.Value.Format, "UserGamesOrder.game_id format must be uuid")
|
||||
|
||||
updatedAtSchema := schema.Value.Properties["updatedAt"]
|
||||
require.NotNil(t, updatedAtSchema, "UserGamesOrder.updatedAt schema must exist")
|
||||
require.True(t, updatedAtSchema.Value.Type.Is("integer"), "UserGamesOrder.updatedAt must be integer")
|
||||
require.Equal(t, "int64", updatedAtSchema.Value.Format, "UserGamesOrder.updatedAt format must be int64")
|
||||
|
||||
cmdSchema := schema.Value.Properties["cmd"]
|
||||
require.NotNil(t, cmdSchema, "UserGamesOrder.cmd schema must exist")
|
||||
require.True(t, cmdSchema.Value.Type.Is("array"), "UserGamesOrder.cmd must be array")
|
||||
require.NotNil(t, cmdSchema.Value.Items, "UserGamesOrder.cmd items must be defined")
|
||||
assertSchemaRef(t, cmdSchema.Value.Items, "#/components/schemas/Command", "UserGamesOrder.cmd items schema")
|
||||
}
|
||||
|
||||
func TestGameOpenAPISpecFreezesGetOrderOperation(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
doc := loadOpenAPISpec(t)
|
||||
operation := getOpenAPIOperation(t, doc, "/api/v1/order", http.MethodGet)
|
||||
|
||||
require.Equal(t, "getOrder", operation.OperationID, "GET /api/v1/order operation id")
|
||||
|
||||
paramRefs := make(map[string]bool)
|
||||
for _, p := range operation.Parameters {
|
||||
require.NotNil(t, p.Value, "parameter must have value")
|
||||
paramRefs[p.Ref] = true
|
||||
}
|
||||
require.True(t, paramRefs["#/components/parameters/PlayerParam"], "GET /api/v1/order must reference PlayerParam")
|
||||
require.True(t, paramRefs["#/components/parameters/TurnParam"], "GET /api/v1/order must reference TurnParam")
|
||||
}
|
||||
|
||||
func TestGameOpenAPISpecFreezesInitRequest(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user