fix: schemes without type: object are not expandable

fixes #599
This commit is contained in:
Roman Hotsiy 2018-08-08 11:37:08 +03:00
parent 597688e720
commit 97e16208d5
No known key found for this signature in database
GPG Key ID: 5CB7B3ACABA57CB0
3 changed files with 15 additions and 4 deletions

View File

@ -104,7 +104,7 @@ export class SchemaModel {
this.constraints = humanizeConstraints(schema);
this.displayType = this.type;
this.displayFormat = this.format;
this.isPrimitive = isPrimitiveType(schema);
this.isPrimitive = isPrimitiveType(schema, this.type);
this.default = schema.default;
this.readOnly = !!schema.readOnly;
this.writeOnly = !!schema.writeOnly;

View File

@ -187,6 +187,17 @@ describe('Utils', () => {
};
expect(isPrimitiveType(schema)).toEqual(false);
});
it('should work with externally provided type', () => {
const schema = {
properties: {
a: {
type: 'string',
},
},
};
expect(isPrimitiveType(schema, 'object')).toEqual(false);
});
});
describe('openapi mergeParams', () => {

View File

@ -105,18 +105,18 @@ export function detectType(schema: OpenAPISchema): string {
return 'any';
}
export function isPrimitiveType(schema: OpenAPISchema) {
export function isPrimitiveType(schema: OpenAPISchema, type: string | undefined = schema.type) {
if (schema.oneOf !== undefined || schema.anyOf !== undefined) {
return false;
}
if (schema.type === 'object') {
if (type === 'object') {
return schema.properties !== undefined
? Object.keys(schema.properties).length === 0
: schema.additionalProperties === undefined;
}
if (schema.type === 'array') {
if (type === 'array') {
if (schema.items === undefined) {
return true;
}