forked from mirrors/probot
Wait for async events to resolve before returning
This commit is contained in:
parent
98f12419e6
commit
b4d946f92b
|
@ -1,4 +1,4 @@
|
|||
const {EventEmitter} = require('events');
|
||||
const {EventEmitter} = require('promise-events');
|
||||
const GitHubApi = require('github');
|
||||
const Bottleneck = require('bottleneck');
|
||||
const Context = require('./context');
|
||||
|
@ -16,9 +16,9 @@ class Robot {
|
|||
this.log = wrapLogger(logger);
|
||||
}
|
||||
|
||||
receive(event) {
|
||||
this.events.emit('*', event);
|
||||
this.events.emit(event.event, event);
|
||||
async receive(event) {
|
||||
await this.events.emit('*', event);
|
||||
await this.events.emit(event.event, event);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2219,6 +2219,11 @@
|
|||
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
|
||||
"dev": true
|
||||
},
|
||||
"promise-events": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/promise-events/-/promise-events-0.1.3.tgz",
|
||||
"integrity": "sha1-VyzKwrr4Joueup8zf1a+PIGB8n0="
|
||||
},
|
||||
"proto-props": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/proto-props/-/proto-props-0.2.1.tgz",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"github-webhook-handler": "^0.6.0",
|
||||
"load-plugins": "^2.1.2",
|
||||
"pkg-conf": "^2.0.0",
|
||||
"promise-events": "^0.1.3",
|
||||
"raven": "^2.1.0",
|
||||
"resolve": "^1.3.2",
|
||||
"semver": "^5.3.0"
|
||||
|
|
|
@ -72,6 +72,25 @@ describe('Robot', function () {
|
|||
});
|
||||
});
|
||||
|
||||
describe('receive', () => {
|
||||
it('waits for async events to resolve', async () => {
|
||||
const spy = expect.createSpy();
|
||||
|
||||
robot.on('test', () => {
|
||||
return new Promise(resolve => {
|
||||
setTimeout(() => {
|
||||
spy();
|
||||
resolve();
|
||||
}, 1);
|
||||
})
|
||||
});
|
||||
|
||||
await robot.receive(event);
|
||||
|
||||
expect(spy).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('error handling', () => {
|
||||
it('logs errors throw from handlers', async () => {
|
||||
const error = new Error('testing');
|
||||
|
|
Loading…
Reference in New Issue