fork of hey-api/openapi-ts because I need some additional things
at feat/skip-token 38 lines 2.0 kB view raw
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});