2017-10-22 00:03:26 -05:00
|
|
|
import {Emitter} from '../utils/emitter';
|
2016-03-23 06:50:56 -05:00
|
|
|
|
|
|
|
describe("Emitter", () => {
|
|
|
|
|
|
|
|
describe('given 2 subscribers', () => {
|
|
|
|
|
|
|
|
it('should notfiy subscribers', () => {
|
|
|
|
var events = new Emitter();
|
|
|
|
var sub1Called = false;
|
|
|
|
var sub2Called = false;
|
|
|
|
|
|
|
|
events.on('test', () => {
|
|
|
|
sub1Called = true;
|
|
|
|
});
|
|
|
|
events.on('test', () => {
|
|
|
|
sub2Called = true;
|
|
|
|
});
|
|
|
|
|
|
|
|
events.emit('test', null);
|
|
|
|
|
2017-10-22 00:03:26 -05:00
|
|
|
expect(sub1Called).toBe(true);
|
|
|
|
expect(sub2Called).toBe(true);
|
2016-03-23 06:50:56 -05:00
|
|
|
});
|
|
|
|
|
2016-09-19 04:34:08 -05:00
|
|
|
it('when subscribing twice', () => {
|
|
|
|
var events = new Emitter();
|
|
|
|
var sub1Called = 0;
|
|
|
|
|
|
|
|
function handler() {
|
|
|
|
sub1Called += 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
events.on('test', handler);
|
|
|
|
events.on('test', handler);
|
|
|
|
|
|
|
|
events.emit('test', null);
|
|
|
|
|
2017-10-22 00:03:26 -05:00
|
|
|
expect(sub1Called).toBe(2);
|
2016-09-19 04:34:08 -05:00
|
|
|
});
|
|
|
|
|
2016-04-18 10:12:53 -05:00
|
|
|
it('should handle errors', () => {
|
2016-04-07 18:23:20 -05:00
|
|
|
var events = new Emitter();
|
|
|
|
var sub1Called = 0;
|
|
|
|
var sub2Called = 0;
|
|
|
|
|
2016-04-07 18:47:48 -05:00
|
|
|
events.on('test', () => {
|
2016-04-07 18:23:20 -05:00
|
|
|
sub1Called++;
|
2017-09-21 10:23:31 -05:00
|
|
|
throw {message: "hello"};
|
2016-04-07 18:23:20 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
events.on('test', () => {
|
|
|
|
sub2Called++;
|
|
|
|
});
|
|
|
|
|
|
|
|
try { events.emit('test', null); } catch (_) { }
|
|
|
|
try { events.emit('test', null); } catch (_) {}
|
|
|
|
|
2017-10-22 00:03:26 -05:00
|
|
|
expect(sub1Called).toBe(2);
|
|
|
|
expect(sub2Called).toBe(0);
|
2016-04-07 18:23:20 -05:00
|
|
|
});
|
|
|
|
});
|
2016-03-23 06:50:56 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
|