AI Implementation feature(820): Project Scaffold and Platform Foundations (#1)

This commit was merged in pull request #1.
This commit is contained in:
2026-07-21 14:23:53 +00:00
parent e55c9cda56
commit 03bcb6b156
131 changed files with 23657 additions and 0 deletions
+97
View File
@@ -0,0 +1,97 @@
import { toOpenApi31 } from '../../backend/src/common/utils/openapi31';
describe('toOpenApi31', () => {
it('sets openapi to 3.1.0', () => {
const doc: any = toOpenApi31({ openapi: '3.0.0', info: { title: 'X', version: '1' }, paths: {} });
expect(doc.openapi).toBe('3.1.0');
});
it('preserves info title and version', () => {
const doc: any = toOpenApi31({ openapi: '3.0.0', info: { title: 'HIPCTF', version: '1.0.0' }, paths: {} });
expect(doc.info.title).toBe('HIPCTF');
expect(doc.info.version).toBe('1.0.0');
});
it('rewrites nullable=true to type union with null', () => {
const doc: any = toOpenApi31({
openapi: '3.0.0',
info: { title: 't', version: 'v' },
paths: {},
components: {
schemas: {
Foo: { type: 'object', properties: { name: { type: 'string', nullable: true } } },
},
},
});
expect(doc.components.schemas.Foo.properties.name).toEqual({ type: ['string', 'null'] });
expect(doc.components.schemas.Foo.properties.name.nullable).toBeUndefined();
});
it('handles nullable without an explicit type', () => {
const doc: any = toOpenApi31({
openapi: '3.0.0',
info: { title: 't', version: 'v' },
paths: {},
components: { schemas: { Bar: { nullable: true } } },
});
expect(doc.components.schemas.Bar).toEqual({ type: ['null'] });
});
it('preserves $ref nodes', () => {
const doc: any = toOpenApi31({
openapi: '3.0.0',
info: { title: 't', version: 'v' },
paths: {},
components: {
schemas: {
Foo: { $ref: '#/components/schemas/Bar' },
},
},
});
expect(doc.components.schemas.Foo).toEqual({ $ref: '#/components/schemas/Bar' });
});
it('recurses into array items, oneOf, anyOf, allOf', () => {
const doc: any = toOpenApi31({
openapi: '3.0.0',
info: { title: 't', version: 'v' },
paths: {},
components: {
schemas: {
Foo: {
type: 'object',
properties: {
arr: { type: 'array', items: { type: 'string', nullable: true } },
union: { oneOf: [{ type: 'string', nullable: true }] },
},
},
},
},
});
expect(doc.components.schemas.Foo.properties.arr.items).toEqual({ type: ['string', 'null'] });
expect(doc.components.schemas.Foo.properties.union.oneOf[0]).toEqual({ type: ['string', 'null'] });
});
it('rewrites nullable in path parameters and request bodies', () => {
const doc: any = toOpenApi31({
openapi: '3.0.0',
info: { title: 't', version: 'v' },
paths: {
'/x': {
get: {
parameters: [{ name: 'q', in: 'query', schema: { type: 'string', nullable: true } }],
requestBody: {
content: {
'application/json': { schema: { type: 'object', properties: { p: { type: 'integer', nullable: true } } } },
},
},
},
},
},
});
const params = doc.paths['/x'].get.parameters;
expect(params[0].schema).toEqual({ type: ['string', 'null'] });
const bodySchema = doc.paths['/x'].get.requestBody.content['application/json'].schema;
expect(bodySchema.properties.p).toEqual({ type: ['integer', 'null'] });
});
});