-
-
Notifications
You must be signed in to change notification settings - Fork 771
/
eventemitter.js
60 lines (49 loc) · 2.32 KB
/
eventemitter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*global mock */
const container = {};
describe("The _converse Event Emitter", function() {
it("allows you to subscribe to emitted events", mock.initConverse((_converse) => {
container.callback = function () {};
spyOn(container, 'callback');
_converse.on('connected', container.callback);
_converse.api.trigger('connected');
expect(container.callback).toHaveBeenCalled();
_converse.api.trigger('connected');
expect(container.callback.calls.count(), 2);
_converse.api.trigger('connected');
expect(container.callback.calls.count(), 3);
}));
it("allows you to listen once for an emitted event", mock.initConverse((_converse) => {
container.callback = function () {};
spyOn(container, 'callback');
_converse.once('connected', container.callback);
_converse.api.trigger('connected');
expect(container.callback).toHaveBeenCalled();
_converse.api.trigger('connected');
expect(container.callback.calls.count(), 1);
_converse.api.trigger('connected');
expect(container.callback.calls.count(), 1);
}));
it("allows you to stop listening or subscribing to an event", mock.initConverse((_converse) => {
container.callback = function () {};
container.anotherCallback = function () {};
container.neverCalled = function () {};
spyOn(container, 'callback');
spyOn(container, 'anotherCallback');
spyOn(container, 'neverCalled');
_converse.on('connected', container.callback);
_converse.on('connected', container.anotherCallback);
_converse.api.trigger('connected');
expect(container.callback).toHaveBeenCalled();
expect(container.anotherCallback).toHaveBeenCalled();
_converse.off('connected', container.callback);
_converse.api.trigger('connected');
expect(container.callback.calls.count(), 1);
expect(container.anotherCallback.calls.count(), 2);
_converse.once('connected', container.neverCalled);
_converse.off('connected', container.neverCalled);
_converse.api.trigger('connected');
expect(container.callback.calls.count(), 1);
expect(container.anotherCallback.calls.count(), 3);
expect(container.neverCalled).not.toHaveBeenCalled();
}));
});