fork of hey-api/openapi-ts because I need some additional things
1import type { IrTopLevelKind } from '../graph';
2import { matchIrPointerToGroup } from '../graph';
3
4describe('matchIrPointerToGroup', () => {
5 const cases: Array<
6 [string, IrTopLevelKind | undefined, { kind?: IrTopLevelKind; matched: boolean }]
7 > = [
8 ['#/components/schemas/Foo', undefined, { kind: 'schema', matched: true }],
9 ['#/components/schemas/Foo', 'schema', { kind: 'schema', matched: true }],
10 ['#/components/schemas/Foo', 'parameter', { matched: false }],
11 ['#/components/parameters/Bar', undefined, { kind: 'parameter', matched: true }],
12 ['#/components/parameters/Bar', 'parameter', { kind: 'parameter', matched: true }],
13 ['#/components/parameters/Bar', 'schema', { matched: false }],
14 ['#/components/requestBodies/Baz', undefined, { kind: 'requestBody', matched: true }],
15 ['#/components/requestBodies/Baz', 'requestBody', { kind: 'requestBody', matched: true }],
16 ['#/components/requestBodies/Baz', 'schema', { matched: false }],
17 ['#/servers/0', undefined, { kind: 'server', matched: true }],
18 ['#/servers/foo', undefined, { kind: 'server', matched: true }],
19 ['#/paths/~1users/get', undefined, { kind: 'operation', matched: true }],
20 ['#/paths/~1users/post', 'operation', { kind: 'operation', matched: true }],
21 ['#/webhooks/foo/get', undefined, { kind: 'webhook', matched: true }],
22 ['#/webhooks/foo/patch', 'webhook', { kind: 'webhook', matched: true }],
23 ['#/not/a/top/level', undefined, { matched: false }],
24 ['#/components/unknown/Foo', undefined, { matched: false }],
25 ];
26
27 for (const [pointer, kind, expected] of cases) {
28 it(`matches ${pointer} with kind=${kind}`, () => {
29 const result = matchIrPointerToGroup(pointer, kind as IrTopLevelKind);
30 expect(result.matched).toBe(expected.matched);
31 if (expected.matched) {
32 expect(result.kind).toBe(expected.kind);
33 } else {
34 expect(result.kind).toBeUndefined();
35 }
36 });
37 }
38});