emitter_specs.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {describe, beforeEach, it, sinon, expect} from 'test/lib/common'
  2. import {Emitter} from 'app/core/core';
  3. describe("Emitter", () => {
  4. describe('given 2 subscribers', () => {
  5. it('should notfiy subscribers', () => {
  6. var events = new Emitter();
  7. var sub1Called = false;
  8. var sub2Called = false;
  9. events.on('test', () => {
  10. sub1Called = true;
  11. });
  12. events.on('test', () => {
  13. sub2Called = true;
  14. });
  15. events.emit('test', null);
  16. expect(sub1Called).to.be(true);
  17. expect(sub2Called).to.be(true);
  18. });
  19. it('when subscribing twice', () => {
  20. var events = new Emitter();
  21. var sub1Called = 0;
  22. function handler() {
  23. sub1Called += 1;
  24. }
  25. events.on('test', handler);
  26. events.on('test', handler);
  27. events.emit('test', null);
  28. expect(sub1Called).to.be(2);
  29. });
  30. it('should handle errors', () => {
  31. var events = new Emitter();
  32. var sub1Called = 0;
  33. var sub2Called = 0;
  34. events.on('test', () => {
  35. sub1Called++;
  36. throw "hello";
  37. });
  38. events.on('test', () => {
  39. sub2Called++;
  40. });
  41. try { events.emit('test', null); } catch (_) { }
  42. try { events.emit('test', null); } catch (_) {}
  43. expect(sub1Called).to.be(2);
  44. expect(sub2Called).to.be(0);
  45. });
  46. });
  47. });