From 80b493746f30cc47205c3b8c1ac8efb4d4175330 Mon Sep 17 00:00:00 2001 From: Kamil Krzywda Date: Mon, 28 Sep 2026 21:35:15 +0000 Subject: [PATCH] test: openapi spec assertions for the world endpoints --- lib/openapi.test.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/openapi.test.ts b/lib/openapi.test.ts index 1a2c35b..07cc610 100644 --- a/lib/openapi.test.ts +++ b/lib/openapi.test.ts @@ -3,8 +3,20 @@ import { describe, expect, it } from 'vitest'; import { openApiSpec } from './openapi'; describe('OpenAPI spec', () => { - it('documents exactly the one public endpoint (scaffold stage)', () => { - expect(Object.keys(openApiSpec.paths).sort()).toEqual(['/api/version']); + it('documents every public endpoint', () => { + expect(Object.keys(openApiSpec.paths).sort()).toEqual(['/api/jump', '/api/version', '/api/world']); + }); + + it('describes the world endpoints as WorldState in and out', () => { + const world = openApiSpec.paths['/api/world'].get.responses[200].content['application/json'].schema; + expect(world.$ref).toBe('#/components/schemas/WorldState'); + + const jump = openApiSpec.paths['/api/jump'].post; + expect(jump.requestBody.content['application/json'].schema.$ref).toBe('#/components/schemas/JumpRequest'); + expect(jump.responses[200].content['application/json'].schema.$ref).toBe('#/components/schemas/WorldState'); + for (const status of ['400', '404', '409'] as const) { + expect(jump.responses[status].content['application/json'].schema.$ref).toBe('#/components/schemas/Error'); + } }); it('keeps info.version in sync with package.json', () => {