grafana/public/app/core/specs/emitter.test.ts

68 lines
1.4 KiB
TypeScript
Raw Normal View History

2017-12-20 05:33:33 -06:00
import { Emitter } from '../utils/emitter';
import { eventFactory } from '@grafana/data';
const testEvent = eventFactory('test');
2017-12-20 05:33:33 -06:00
describe('Emitter', () => {
describe('given 2 subscribers', () => {
it('should notfiy subscribers', () => {
const events = new Emitter();
let sub1Called = false;
let sub2Called = false;
events.on(testEvent, () => {
sub1Called = true;
});
events.on(testEvent, () => {
sub2Called = true;
});
events.emit(testEvent, null);
expect(sub1Called).toBe(true);
expect(sub2Called).toBe(true);
});
2017-12-20 05:33:33 -06:00
it('when subscribing twice', () => {
const events = new Emitter();
let sub1Called = 0;
function handler() {
sub1Called += 1;
}
events.on(testEvent, handler);
events.on(testEvent, handler);
events.emit(testEvent, null);
expect(sub1Called).toBe(2);
});
2017-12-20 05:33:33 -06:00
it('should handle errors', () => {
const events = new Emitter();
let sub1Called = 0;
let sub2Called = 0;
2016-04-07 18:23:20 -05:00
events.on(testEvent, () => {
2016-04-07 18:23:20 -05:00
sub1Called++;
2017-12-20 05:33:33 -06:00
throw { message: 'hello' };
2016-04-07 18:23:20 -05:00
});
events.on(testEvent, () => {
2016-04-07 18:23:20 -05:00
sub2Called++;
});
try {
events.emit(testEvent, null);
} catch (_) {}
try {
events.emit(testEvent, null);
} catch (_) {}
2016-04-07 18:23:20 -05:00
expect(sub1Called).toBe(2);
expect(sub2Called).toBe(0);
2016-04-07 18:23:20 -05:00
});
});
});