xmpp.chapril.org-conversejs/src/headless/tests/eventemitter.js

59 lines
2.2 KiB
JavaScript
Raw Normal View History

2020-04-22 13:11:48 +02:00
/*global mock */
describe("The _converse Event Emitter", function() {
2021-06-28 12:00:47 +02:00
it("allows you to subscribe to emitted events", mock.initConverse((_converse) => {
window.callback = function () {};
spyOn(window, 'callback');
_converse.on('connected', window.callback);
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback).toHaveBeenCalled();
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback.calls.count(), 2);
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback.calls.count(), 3);
2020-04-22 13:11:48 +02:00
}));
2021-06-28 12:00:47 +02:00
it("allows you to listen once for an emitted event", mock.initConverse((_converse) => {
window.callback = function () {};
spyOn(window, 'callback');
_converse.once('connected', window.callback);
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback).toHaveBeenCalled();
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback.calls.count(), 1);
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback.calls.count(), 1);
2020-04-22 13:11:48 +02:00
}));
2021-06-28 12:00:47 +02:00
it("allows you to stop listening or subscribing to an event", mock.initConverse((_converse) => {
window.callback = function () {};
window.anotherCallback = function () {};
window.neverCalled = function () {};
2020-04-22 13:11:48 +02:00
spyOn(window, 'callback');
spyOn(window, 'anotherCallback');
spyOn(window, 'neverCalled');
_converse.on('connected', window.callback);
_converse.on('connected', window.anotherCallback);
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback).toHaveBeenCalled();
expect(window.anotherCallback).toHaveBeenCalled();
2020-04-22 13:11:48 +02:00
_converse.off('connected', window.callback);
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback.calls.count(), 1);
expect(window.anotherCallback.calls.count(), 2);
2020-04-22 13:11:48 +02:00
_converse.once('connected', window.neverCalled);
_converse.off('connected', window.neverCalled);
2020-04-22 13:11:48 +02:00
_converse.api.trigger('connected');
expect(window.callback.calls.count(), 1);
expect(window.anotherCallback.calls.count(), 3);
expect(window.neverCalled).not.toHaveBeenCalled();
2020-04-22 13:11:48 +02:00
}));
});