From c95b6f3d1abdee85e07508f1c79eb81f80f547d2 Mon Sep 17 00:00:00 2001 From: FWeinb Date: Wed, 11 Jan 2017 16:21:19 +0100 Subject: [PATCH] fix(provider-http): Use resolveArg instead of getters in convertObjectWithTemplates (#594) --- .../cerebral-provider-http/src/http.test.js | 35 +++++++++++++++++++ packages/cerebral-provider-http/src/utils.js | 11 +++--- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/packages/cerebral-provider-http/src/http.test.js b/packages/cerebral-provider-http/src/http.test.js index 87e83c85a..c718777cf 100644 --- a/packages/cerebral-provider-http/src/http.test.js +++ b/packages/cerebral-provider-http/src/http.test.js @@ -223,4 +223,39 @@ describe('Http Provider', () => { itemId: 1 }) }) + it('should allow factories to accept tags in input data', (done) => { + const mockResponse = (req, res) => { + assert.equal(req.body(), JSON.stringify({data: 1})) + return res + .status(200) + .header('Content-Type', 'application/json') + } + + mock.post('/test', mockResponse) + mock.put('/test', mockResponse) + mock.patch('/test', mockResponse) + + const controller = Controller({ + providers: [HttpProvider()], + signals: { + test: [ + httpPost('/test', { data: input`data` }), { + success: [] + }, + httpPut('/test', { data: input`data` }), { + success: [] + }, + httpPatch('/test', { data: input`data` }), { + success: [] + }, + () => { + done() + } + ] + } + }) + controller.getSignal('test')({ + data: 1 + }) + }) }) diff --git a/packages/cerebral-provider-http/src/utils.js b/packages/cerebral-provider-http/src/utils.js index c19f263f7..a259b5a74 100644 --- a/packages/cerebral-provider-http/src/utils.js +++ b/packages/cerebral-provider-http/src/utils.js @@ -1,5 +1,3 @@ -import {Tag} from 'cerebral/tags' - export function createResponse (options, resolve, reject) { return (event) => { switch (event.type) { @@ -55,14 +53,13 @@ export function urlEncode (obj, prefix) { return str.join('&') } -export function convertObjectWithTemplates (obj, getters) { - if (obj instanceof Tag) { - return obj.getValue(getters) +export function convertObjectWithTemplates (obj, resolveArg) { + if (resolveArg.isTag(obj)) { + return resolveArg.value(obj) } return Object.keys(obj).reduce((convertedObject, key) => { - convertedObject[key] = obj[key] instanceof Tag ? obj[key].getValue(getters) : obj[key] - + convertedObject[key] = resolveArg.value(obj[key]) return convertedObject }, {}) }