fix: definition name util (#1865)

* fix: definition name util

* update snapshot
This commit is contained in:
Oprysk Vyacheslav 2022-01-20 00:01:30 +02:00 committed by GitHub
parent 3e47932754
commit 95a7347931
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 7 deletions

View File

@ -752,7 +752,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
"required": Array [
"type",
],
"title": "schemas",
"title": "Dog",
"type": "object",
},
"title": "Dog",
@ -1488,7 +1488,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
"required": Array [
"type",
],
"title": "schemas",
"title": "Cat",
"type": "object",
},
"title": "Cat",
@ -2454,7 +2454,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
"required": Array [
"type",
],
"title": "schemas",
"title": "Dog",
"type": "object",
},
"title": "Dog",

View File

@ -12,6 +12,7 @@ import {
sortByRequired,
humanizeNumberRange,
getContentWithLegacyExamples,
getDefinitionName,
} from '../';
import { FieldModel, OpenAPIParser, RedocNormalizedOptions } from '../../services';
@ -1269,4 +1270,14 @@ describe('Utils', () => {
expect(content['text/plain']).toStrictEqual(info.content['text/plain']);
});
});
describe('getDefinitionName', () => {
test('should return the name if pointer match regex', () => {
expect(getDefinitionName('#/components/schemas/Call')).toEqual('Call');
});
test("should return the `undefined` if pointer not match regex or it's absent", () => {
expect(getDefinitionName('#/test/path/Call')).toBeUndefined();
expect(getDefinitionName()).toBeUndefined();
});
});
});

View File

@ -384,14 +384,15 @@ export function langFromMime(contentType: string): string {
return 'clike';
}
const DEFINITION_NAME_REGEX = /^#\/components\/(schemas|pathItems)\/([^/]+)$/;
export function isNamedDefinition(pointer?: string): boolean {
return /^#\/components\/(schemas|pathItems)\/[^\/]+$/.test(pointer || '');
return DEFINITION_NAME_REGEX.test(pointer || '');
}
export function getDefinitionName(pointer?: string): string | undefined {
if (!pointer) return undefined;
const match = pointer.match(/^#\/components\/(schemas|pathItems)\/([^\/]+)$/);
return match === null ? undefined : match[1];
const [name] = pointer?.match(DEFINITION_NAME_REGEX)?.reverse() || [];
return name;
}
function humanizeMultipleOfConstraint(multipleOf: number | undefined): string | undefined {