api+openapi: GET /api/ship + POST upgrade/expand/build with 400/404/409/422 mapping
This commit is contained in:
@@ -8,12 +8,37 @@ describe('OpenAPI spec', () => {
|
||||
'/api/crew',
|
||||
'/api/explore',
|
||||
'/api/jump',
|
||||
'/api/ship',
|
||||
'/api/ship/build',
|
||||
'/api/ship/expand',
|
||||
'/api/ship/upgrade',
|
||||
'/api/system',
|
||||
'/api/version',
|
||||
'/api/world',
|
||||
]);
|
||||
});
|
||||
|
||||
it('describes the ship endpoints as ShipState in and out, with error responses on the actions', () => {
|
||||
const ship = openApiSpec.paths['/api/ship'].get.responses[200].content['application/json'].schema;
|
||||
expect(ship.$ref).toBe('#/components/schemas/ShipState');
|
||||
|
||||
const system = openApiSpec.components.schemas.ShipSystem.properties;
|
||||
expect(Object.keys(system)).toEqual(['id', 'type', 'level', 'capacity', 'built']);
|
||||
|
||||
for (const [path, request] of [
|
||||
['/api/ship/upgrade', '#/components/schemas/UpgradeRequest'],
|
||||
['/api/ship/expand', '#/components/schemas/ExpandRequest'],
|
||||
['/api/ship/build', '#/components/schemas/BuildRequest'],
|
||||
] as const) {
|
||||
const post = openApiSpec.paths[path].post;
|
||||
expect(post.requestBody.content['application/json'].schema.$ref).toBe(request);
|
||||
expect(post.responses[200].content['application/json'].schema.$ref).toBe('#/components/schemas/ShipState');
|
||||
for (const status of ['400', '404', '409', '422'] as const) {
|
||||
expect(post.responses[status].content['application/json'].schema.$ref).toBe('#/components/schemas/Error');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it('describes /api/crew as an array of CrewMember and crewFound on ExploreResult', () => {
|
||||
const crew = openApiSpec.paths['/api/crew'].get.responses[200].content['application/json'].schema;
|
||||
expect(crew.type).toBe('array');
|
||||
|
||||
Reference in New Issue
Block a user