Properly convert complex return types.

Attached tests.
This commit is contained in:
Samuel Reed 2014-07-20 20:04:10 -05:00
parent 6319572a55
commit 84e9486062
2 changed files with 28 additions and 4 deletions

View File

@ -124,7 +124,9 @@ var routeHelper = module.exports = {
var apiDoc = { var apiDoc = {
path: routeHelper.convertPathFragments(route.path), path: routeHelper.convertPathFragments(route.path),
operations: [{ // Create the operation doc. Use `extendWithType` to add the necessary
// `items` and `format` fields.
operations: [routeHelper.extendWithType({
method: routeHelper.convertVerb(route.verb), method: routeHelper.convertVerb(route.verb),
// [rfeng] Swagger UI doesn't escape '.' for jQuery selector // [rfeng] Swagger UI doesn't escape '.' for jQuery selector
nickname: route.method.replace(/\./g, '_'), nickname: route.method.replace(/\./g, '_'),
@ -137,10 +139,10 @@ var routeHelper = module.exports = {
responseMessages: [], responseMessages: [],
summary: route.description, // TODO(schoon) - Excerpt? summary: route.description, // TODO(schoon) - Excerpt?
notes: '' // TODO(schoon) - `description` metadata? notes: '' // TODO(schoon) - `description` metadata?
}] })]
}; };
// Convert types and return.
return routeHelper.extendWithType(apiDoc); return apiDoc;
}, },
convertPathFragments: function convertPathFragments(path) { convertPathFragments: function convertPathFragments(path) {

View File

@ -53,6 +53,28 @@ describe('route-helper', function() {
expect(paramDoc.format).to.equal('byte'); expect(paramDoc.format).to.equal('byte');
}); });
it('correctly converts return types (arrays)', function() {
var doc = createAPIDoc({
returns: [
{arg: 'data', type: ['customType']}
]
});
var opDoc = doc.operations[0];
expect(opDoc.type).to.equal('array');
expect(opDoc.items).to.eql({type: 'customType'});
});
it('correctly converts return types (format)', function() {
var doc = createAPIDoc({
returns: [
{arg: 'data', type: 'buffer'}
]
});
var opDoc = doc.operations[0];
expect(opDoc.type).to.equal('string');
expect(opDoc.format).to.equal('byte');
});
}); });
// Easy wrapper around createRoute // Easy wrapper around createRoute