2
0

eventemitter.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*global mock */
  2. describe("The _converse Event Emitter", function() {
  3. it("allows you to subscribe to emitted events", mock.initConverse((done, _converse) => {
  4. this.callback = function () {};
  5. spyOn(this, 'callback');
  6. _converse.on('connected', this.callback);
  7. _converse.api.trigger('connected');
  8. expect(this.callback).toHaveBeenCalled();
  9. _converse.api.trigger('connected');
  10. expect(this.callback.calls.count(), 2);
  11. _converse.api.trigger('connected');
  12. expect(this.callback.calls.count(), 3);
  13. done();
  14. }));
  15. it("allows you to listen once for an emitted event", mock.initConverse((done, _converse) => {
  16. this.callback = function () {};
  17. spyOn(this, 'callback');
  18. _converse.once('connected', this.callback);
  19. _converse.api.trigger('connected');
  20. expect(this.callback).toHaveBeenCalled();
  21. _converse.api.trigger('connected');
  22. expect(this.callback.calls.count(), 1);
  23. _converse.api.trigger('connected');
  24. expect(this.callback.calls.count(), 1);
  25. done();
  26. }));
  27. it("allows you to stop listening or subscribing to an event", mock.initConverse((done, _converse) => {
  28. this.callback = function () {};
  29. this.anotherCallback = function () {};
  30. this.neverCalled = function () {};
  31. spyOn(this, 'callback');
  32. spyOn(this, 'anotherCallback');
  33. spyOn(this, 'neverCalled');
  34. _converse.on('connected', this.callback);
  35. _converse.on('connected', this.anotherCallback);
  36. _converse.api.trigger('connected');
  37. expect(this.callback).toHaveBeenCalled();
  38. expect(this.anotherCallback).toHaveBeenCalled();
  39. _converse.off('connected', this.callback);
  40. _converse.api.trigger('connected');
  41. expect(this.callback.calls.count(), 1);
  42. expect(this.anotherCallback.calls.count(), 2);
  43. _converse.once('connected', this.neverCalled);
  44. _converse.off('connected', this.neverCalled);
  45. _converse.api.trigger('connected');
  46. expect(this.callback.calls.count(), 1);
  47. expect(this.anotherCallback.calls.count(), 3);
  48. expect(this.neverCalled).not.toHaveBeenCalled();
  49. done();
  50. }));
  51. });