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 }, {}) }