diff --git a/lib/commands/smapi/smapi-command-handler.js b/lib/commands/smapi/smapi-command-handler.js index d4184c8e..28c07021 100644 --- a/lib/commands/smapi/smapi-command-handler.js +++ b/lib/commands/smapi/smapi-command-handler.js @@ -48,6 +48,10 @@ const _loadValue = (param, value) => { const _mapToParams = (optionsValues, flatParamsMap, commanderToApiCustomizationMap) => { const res = {}; + const bodyParam = Array.from(flatParamsMap.values()).find(p => p.rootName); + if (bodyParam) { + res[bodyParam.rootName] = {}; + } Object.keys(optionsValues).forEach(key => { const apiName = commanderToApiCustomizationMap.get(key) || key; const param = flatParamsMap.get(standardize(apiName)); @@ -57,9 +61,6 @@ const _mapToParams = (optionsValues, flatParamsMap, commanderToApiCustomizationM value = param.isNumber ? Number(value) : value; value = param.isBoolean ? Boolean(value) : value; if (param.rootName) { - if (!res[param.rootName]) { - res[param.rootName] = {}; - } let mergeObject = {}; mergeObject[param.bodyPath] = _loadValue(param, value); mergeObject = unflatten(mergeObject, BODY_PATH_DELIMITER); diff --git a/lib/view/json-view.js b/lib/view/json-view.js index 38da40f2..fab7df5d 100644 --- a/lib/view/json-view.js +++ b/lib/view/json-view.js @@ -11,6 +11,10 @@ module.exports = { */ function toString(jsonObject) { try { + // handle issue when Error object serialized to {} + if (jsonObject instanceof Error) { + jsonObject = { message: jsonObject.message, stack: jsonObject.stack }; + } return JSON.stringify(jsonObject, null, CONSTANTS.CONFIGURATION.JSON_DISPLAY_INDENT); } catch (e) { return e.toString(); diff --git a/test/unit/commands/smapi/smapi-command-handler-test.js b/test/unit/commands/smapi/smapi-command-handler-test.js index a6f900c5..f84dfaa1 100644 --- a/test/unit/commands/smapi/smapi-command-handler-test.js +++ b/test/unit/commands/smapi/smapi-command-handler-test.js @@ -159,7 +159,7 @@ describe('Smapi test - smapiCommandHandler function', () => { skillId, someNonPopulatedProperty: null, someArray: null, - simulationsApiRequest: null })}\n`]); + simulationsApiRequest: {} })}\n`]); expect(messengerStub.args[3]).eql(['INFO', 'Response:']); expect(messengerStub.args[4]).eql(['INFO', jsonView.toString(fakeResponse)]); });