import { EventBus } from '../../src/services/eventBus'; import { OperationLevel } from '../../src/common/signature'; describe('service/eventBus', function () { test('EventBus - register - emit', function () { let eventBus = new EventBus(); eventBus .register('event1', function () { console.log('execute event1 1'); }) .register('event1', function () { console.log('execute event1 2'); }) .register('event2', function () { console.log('execute event2'); }); eventBus.emit('event1'); }); test('EventBus - remove - event - level', function () { let eventBus = new EventBus(); eventBus .register('event1', function () { console.log('execute event1 user'); }) .register('event1', function () { console.log('execute event1 framework'); }, { level: OperationLevel.framework }) .register('event2', function () { console.log('execute event2 user'); }) .register('event2', function () { console.log('execute event2 framework'); }, { level: OperationLevel.framework }); eventBus.unregister('event1'); eventBus.emit('event1').emit('event2'); }); test('EventBus - emitAsync', async function (done) { let eventBus = new EventBus(); eventBus .register('event1', function (resolve: any) { console.log('start executing async event1'); setTimeout(() => { console.log('execute async event1'); resolve(); }, 1000) }) .register('event1', function (resolve: any, reject: any) { console.log('start executing async event2'); setTimeout(() => { console.log('execute async event2'); reject(); }, 1000) }, { interval: 2000 }); await eventBus.emitAsync('event1'); console.log('async event1 extecuted'); done(); }); });