grafana/public/app/core/specs/emitter.test.ts
2018-08-26 21:52:57 +02:00

65 lines
1.3 KiB
TypeScript

import { Emitter } from '../utils/emitter';
describe('Emitter', () => {
describe('given 2 subscribers', () => {
it('should notfiy subscribers', () => {
const events = new Emitter();
let sub1Called = false;
let sub2Called = false;
events.on('test', () => {
sub1Called = true;
});
events.on('test', () => {
sub2Called = true;
});
events.emit('test', null);
expect(sub1Called).toBe(true);
expect(sub2Called).toBe(true);
});
it('when subscribing twice', () => {
const events = new Emitter();
let sub1Called = 0;
function handler() {
sub1Called += 1;
}
events.on('test', handler);
events.on('test', handler);
events.emit('test', null);
expect(sub1Called).toBe(2);
});
it('should handle errors', () => {
const events = new Emitter();
let sub1Called = 0;
let sub2Called = 0;
events.on('test', () => {
sub1Called++;
throw { message: 'hello' };
});
events.on('test', () => {
sub2Called++;
});
try {
events.emit('test', null);
} catch (_) {}
try {
events.emit('test', null);
} catch (_) {}
expect(sub1Called).toBe(2);
expect(sub2Called).toBe(0);
});
});
});