Skip to content

Commit 0a133bd

Browse files
authored
fixed title and desc for arrays (#908)
1 parent e6717b1 commit 0a133bd

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

libV2/schemaUtils.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,8 @@ let QUERYPARAM = 'query',
900900
else if (resolvedSchema.type === 'array' && resolvedSchema.items) {
901901
const arrayDetails = {
902902
type: resolvedSchema.type,
903+
description: resolvedSchema.description,
904+
title: resolvedSchema.title,
903905
items: processSchema(resolvedSchema.items)
904906
};
905907
if (resolvedSchema.minItems !== undefined) { arrayDetails.minItems = resolvedSchema.minItems; }

test/data/valid_openapi/test-title-description.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,23 @@
104104
}
105105
}
106106
}
107+
},
108+
"/inventory": {
109+
"get": {
110+
"operationId": "listInventory",
111+
"responses": {
112+
"200": {
113+
"description": "200 response",
114+
"content": {
115+
"application/json": {
116+
"schema": {
117+
"$ref": "#/components/schemas/ArrayOfInventoryItem"
118+
}
119+
}
120+
}
121+
}
122+
}
123+
}
107124
}
108125
},
109126
"components": {
@@ -229,6 +246,22 @@
229246
"maxLength": 0
230247
}
231248
},
249+
"InventoryItem": {
250+
"title": "InventoryItem",
251+
"description": "An inventory item.",
252+
"type": "object",
253+
"properties": {
254+
"id": { "type": "string" }
255+
}
256+
},
257+
"ArrayOfInventoryItem": {
258+
"title": "ArrayOfInventoryItem",
259+
"description": "A list of inventory items.",
260+
"type": "array",
261+
"items": {
262+
"$ref": "#/components/schemas/InventoryItem"
263+
}
264+
},
232265
"TagList": {
233266
"title": "TagList",
234267
"description": "List of widget tags.",

test/unit/convertV2WithTypes.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1333,6 +1333,15 @@ describe('convertV2WithTypes', function() {
13331333
expect(res500Body.properties.message).to.have.property('description', 'Human-readable error message.');
13341334
expect(res500Body.properties.details).to.have.property('title', 'ErrorDetails');
13351335
expect(res500Body.properties.details).to.have.property('description', 'Optional error details.');
1336+
// verify arrays preserve title and description
1337+
const inventoryElement = extractedTypes['get/inventory'];
1338+
expect(inventoryElement).to.be.an('object').that.includes.keys('response');
1339+
const inventoryResBody = JSON.parse(inventoryElement.response['200'].body);
1340+
expect(inventoryResBody).to.have.property('type', 'array');
1341+
expect(inventoryResBody).to.have.property('title', 'ArrayOfInventoryItem');
1342+
expect(inventoryResBody).to.have.property('description', 'A list of inventory items.');
1343+
expect(inventoryResBody.items).to.have.property('title', 'InventoryItem');
1344+
expect(inventoryResBody.items).to.have.property('description', 'An inventory item.');
13361345
done();
13371346
});
13381347
});

0 commit comments

Comments
 (0)