From d32696f7519e55b26516af4edefcdd3478d8609e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Fri, 2 Sep 2016 13:37:18 +0200 Subject: [PATCH] Allow object arguments to provide Model Add support for a new remoting metadata property "model". This new property can be used for arguments of `type: 'object'` to instruct the swagger-generator to use the provided model as a source of the argument schema. --- lib/specgen/schema-builder.js | 7 ++++++- test/specgen/route-helper.test.js | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/specgen/schema-builder.js b/lib/specgen/schema-builder.js index 116a861..35409f7 100644 --- a/lib/specgen/schema-builder.js +++ b/lib/specgen/schema-builder.js @@ -72,7 +72,12 @@ exports.buildFromLoopBackType = function(ldlDef, typeRegistry) { } var schema = exports.buildMetadata(ldlDef); - var ldlType = exports.getLdlTypeName(ldlDef.type); + + var ldlType = ldlDef.type; + if (ldlType === 'object' && ldlDef.model) { + ldlType = ldlDef.model; + } + ldlType = exports.getLdlTypeName(ldlType); if (Array.isArray(ldlType)) { var itemLdl = ldlType[0] || 'any'; diff --git a/test/specgen/route-helper.test.js b/test/specgen/route-helper.test.js index 2e5213d..bee7226 100644 --- a/test/specgen/route-helper.test.js +++ b/test/specgen/route-helper.test.js @@ -374,6 +374,23 @@ describe('route-helper', function() { .to.have.property('schema') .eql({ $ref: '#/definitions/User' }); }); + + it('supports `model` property', function() { + var doc = createAPIDoc( + { + accepts: [{ + arg: 'result', + type: 'object', + model: 'User', + http: { source: 'body' }, + }], + }, + { name: 'User' }); + var param = doc.operation.parameters[0]; + expect(param) + .to.have.property('schema') + .eql({ $ref: '#/definitions/User' }); + }); }); // Easy wrapper around createRoute