fix: nested items with refs (#2035)

This commit is contained in:
Alex Varchuk 2022-06-01 15:01:39 +03:00 committed by GitHub
parent a366de4cf6
commit 51127aadc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 169 additions and 2 deletions

View File

@ -13,7 +13,7 @@ export interface OAuthFlowProps {
export function OAuthFlowComponent(props: OAuthFlowProps) { export function OAuthFlowComponent(props: OAuthFlowProps) {
const { type, flow, RequiredScopes } = props; const { type, flow, RequiredScopes } = props;
const scopesNames = Object.keys(flow?.scopes || {}); const scopesNames = Object.keys(flow?.scopes || {});
console.log('rended');
return ( return (
<> <>
<SecurityRow> <SecurityRow>

View File

@ -207,6 +207,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -465,6 +474,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -698,6 +716,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -998,6 +1025,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -1256,6 +1292,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -1489,6 +1534,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -1745,6 +1799,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -2042,6 +2105,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -2300,6 +2372,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },
@ -2533,6 +2614,15 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
}, },
"rightPanel": Object { "rightPanel": Object {
"backgroundColor": "#263238", "backgroundColor": "#263238",
"servers": Object {
"overlay": Object {
"backgroundColor": "#fafafa",
"textColor": "#263238",
},
"url": Object {
"backgroundColor": "#fff",
},
},
"textColor": "#ffffff", "textColor": "#ffffff",
"width": "40%", "width": "40%",
}, },

View File

@ -133,6 +133,13 @@
] ]
} }
}, },
"Case6": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/components/schemas/Tag"
}
},
"Cat": { "Cat": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -148,6 +155,29 @@
"type": "string" "type": "string"
} }
} }
},
"Tag": {
"type": "object",
"properties": {
"id": {
"description": "Tag ID",
"allOf": [
{
"$ref": "#/components/schemas/Id"
}
]
},
"name": {
"description": "tag name",
"type": "string",
"minLength": 1
}
}
},
"Id": {
"type": "integer",
"format": "int64",
"readOnly": true
} }
} }
} }

View File

@ -133,6 +133,13 @@
] ]
} }
}, },
"Case6": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/components/schemas/Tag"
}
},
"Cat": { "Cat": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -148,6 +155,29 @@
"type": "string" "type": "string"
} }
} }
},
"Tag": {
"type": "object",
"properties": {
"id": {
"description": "Tag ID",
"allOf": [
{
"$ref": "#/components/schemas/Id"
}
]
},
"name": {
"description": "tag name",
"type": "string",
"minLength": 1
}
}
},
"Id": {
"type": "integer",
"format": "int64",
"readOnly": true
} }
} }
} }

View File

@ -212,6 +212,22 @@ describe('Models', () => {
]); ]);
}, },
); );
test.each(eachArray)(
'schemaDefinition should resolve prefixItems with additional array items',
specFixture => {
const spec = require(specFixture);
const parser = new OpenAPIParser(spec, undefined, opts);
const schema = new SchemaModel(parser, spec.components.schemas.Case6, '', opts);
expect(schema.type).toBe('array');
expect(schema.typePrefix).toBe('Array of ');
expect(schema.items?.fields).toHaveLength(2);
expect(schema.items?.pointer).toEqual('#/components/schemas/Tag');
expect(schema.isPrimitive).toBe(false);
expect(schema.items?.isPrimitive).toBe(false);
expect(schema.minItems).toBe(1);
},
);
}); });
}); });
}); });

View File

@ -209,7 +209,8 @@ export class SchemaModel {
this.displayFormat = this.items?.format || ''; this.displayFormat = this.items?.format || '';
this.typePrefix = this.items?.typePrefix || '' + l('arrayOf'); this.typePrefix = this.items?.typePrefix || '' + l('arrayOf');
this.title = this.title || this.items?.title || ''; this.title = this.title || this.items?.title || '';
this.isPrimitive = this.items?.isPrimitive || this.isPrimitive; this.isPrimitive =
this.items?.isPrimitive !== undefined ? this.items?.isPrimitive : this.isPrimitive;
if (this.example === undefined && this.items?.example !== undefined) { if (this.example === undefined && this.items?.example !== undefined) {
this.example = [this.items.example]; this.example = [this.items.example];