fork of hey-api/openapi-ts because I need some additional things
at feat/use-query-options-param 72 lines 2.5 kB view raw
1import { isTopLevelComponent, jsonPointerToPath, pathToJsonPointer } from '../ref'; 2 3describe('jsonPointerToPath', () => { 4 it('parses root pointer', () => { 5 expect(jsonPointerToPath('#')).toEqual([]); 6 expect(jsonPointerToPath('')).toEqual([]); 7 }); 8 9 it('parses component ref', () => { 10 expect(jsonPointerToPath('#/components/schemas/Foo')).toEqual(['components', 'schemas', 'Foo']); 11 }); 12 13 it('parses deep path ref', () => { 14 expect(jsonPointerToPath('#/components/schemas/Foo/properties/bar/items')).toEqual([ 15 'components', 16 'schemas', 17 'Foo', 18 'properties', 19 'bar', 20 'items', 21 ]); 22 }); 23}); 24 25describe('pathToJsonPointer', () => { 26 it('converts empty path to root pointer', () => { 27 expect(pathToJsonPointer([])).toBe('#'); 28 }); 29 30 it('converts path to pointer', () => { 31 expect(pathToJsonPointer(['components', 'schemas', 'Foo'])).toBe('#/components/schemas/Foo'); 32 }); 33}); 34 35describe('isTopLevelComponent', () => { 36 describe('OpenAPI 3.x refs', () => { 37 it('returns true for top-level component refs', () => { 38 expect(isTopLevelComponent('#/components/schemas/Foo')).toBe(true); 39 expect(isTopLevelComponent('#/components/parameters/Bar')).toBe(true); 40 expect(isTopLevelComponent('#/components/responses/Error')).toBe(true); 41 expect(isTopLevelComponent('#/components/requestBodies/Body')).toBe(true); 42 }); 43 44 it('returns false for deep path refs', () => { 45 expect(isTopLevelComponent('#/components/schemas/Foo/properties/bar')).toBe(false); 46 expect(isTopLevelComponent('#/components/schemas/Foo/properties/bar/items')).toBe(false); 47 expect(isTopLevelComponent('#/components/schemas/Foo/allOf/0')).toBe(false); 48 }); 49 }); 50 51 describe('OpenAPI 2.0 refs', () => { 52 it('returns true for top-level definitions refs', () => { 53 expect(isTopLevelComponent('#/definitions/Foo')).toBe(true); 54 expect(isTopLevelComponent('#/definitions/Bar')).toBe(true); 55 }); 56 57 it('returns false for deep path refs', () => { 58 expect(isTopLevelComponent('#/definitions/Foo/properties/bar')).toBe(false); 59 expect(isTopLevelComponent('#/definitions/Foo/properties/bar/items')).toBe(false); 60 }); 61 }); 62 63 describe('non-component refs', () => { 64 it('returns false for path refs', () => { 65 expect(isTopLevelComponent('#/paths/~1users/get')).toBe(false); 66 }); 67 68 it('returns false for other refs', () => { 69 expect(isTopLevelComponent('#/info/title')).toBe(false); 70 }); 71 }); 72});