Skip to content

Commit 2930528

Browse files
committed
fix (invoke-handler) impossible to return result from custom event handler
1 parent 4d03787 commit 2930528

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

lib/server-code/api/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ ServerCode.addTimer = contextGuarded(function(timer) {
146146
* @param {Boolean} async
147147
*/
148148
ServerCode.customEvent = contextGuarded((eventName, handler, async) => {
149-
addHandler(CUSTOM.events.handleEvent.id, eventName, async, handler);
149+
addHandler(CUSTOM.events.execute.id, eventName, async, handler);
150150
});
151151

152152
/**

lib/server-code/events.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use strict';
22

33
class EventType {
4-
constructor(id, name, provider, args) {
5-
Object.assign(this, { id, name, provider, args });
4+
constructor(id, name, provider, args, rawResult) {
5+
Object.assign(this, { id, name, provider, args, rawResult });
66
}
77
}
88

@@ -28,8 +28,8 @@ const PERSISTENCE = new EventProvider('persistence', true),
2828
GEO = new EventProvider('geo', true),
2929
CUSTOM = new EventProvider('custom', true);
3030

31-
function addEvent(id, name, provider, args) {
32-
events[id] = provider.events[name] = new EventType(id, name, provider, args);
31+
function addEvent(id, name, provider, args, rawResult) {
32+
events[id] = provider.events[name] = new EventType(id, name, provider, args, rawResult);
3333
}
3434

3535
//Data (Persistence Service) Events
@@ -135,7 +135,7 @@ addEvent(609, 'afterMoveFileOrDirectory', FILE, ['source', 'target', 'result']);
135135
addEvent(800, 'execute', TIMER, []);
136136

137137
//Custom Events
138-
addEvent(900, 'handleEvent', CUSTOM, ['args']);
138+
addEvent(900, 'execute', CUSTOM, ['args', 'result'], true);
139139

140140
module.exports = {
141141
/**

lib/server-code/runners/tasks/invoke-handler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ module.exports = function(task, runnerOpts, model) {
6868

6969
event.args.forEach((name, index) => {
7070
taskArgs[index + 1] = (name === 'result')
71-
? resultWrapper.executionResult(res.error, res.result)
71+
? event.rawResult ? res.result : resultWrapper.executionResult(res.error, res.result)
7272
: req[name];
7373
});
7474

test/invoke-handler-task.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ const should = require('should'),
88
executionResult = require('../lib/server-code/runners/tasks/util/result-wrapper').executionResult,
99
PERSISTENCE = events.providers.PERSISTENCE,
1010
BEFORE_CREATE = PERSISTENCE.events.beforeCreate,
11-
AFTER_CREATE = PERSISTENCE.events.afterCreate;
11+
AFTER_CREATE = PERSISTENCE.events.afterCreate,
12+
CUSTOM_EVENT = events.providers.CUSTOM.events.execute;
1213

1314
require('mocha');
1415

@@ -325,4 +326,20 @@ describe('[invoke-handler] task executor', function() {
325326
return invokeAndParse(task, modelStub(handler)).should.be.fulfilledWith(undefined);
326327
});
327328
});
329+
330+
describe('for custom events', function() {
331+
it('should return raw, unwrapped result to the server', function() {
332+
const task = createTask(CUSTOM_EVENT, []);
333+
const result = { a: 'b' };
334+
335+
function handler() {
336+
return result;
337+
}
338+
339+
return invokeAndParse(task, modelStub(handler)).then( res => {
340+
should.exists(res.arguments[2]);
341+
res.arguments[2].should.be.eql(result);
342+
});
343+
});
344+
});
328345
});

0 commit comments

Comments
 (0)