Skip to content

Commit ecf69f6

Browse files
committed
Merge pull request #16 from kuzzleio/unitTests
listeners tests + bugfixes
2 parents f0d78d4 + bbbbb6c commit ecf69f6

File tree

3 files changed

+138
-2
lines changed

3 files changed

+138
-2
lines changed

src/kuzzle.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ Kuzzle.prototype.addListener = function(event, listener) {
403403
throw new Error('[' + event + '] is not a known event. Known events: ' + knownEvents.toString());
404404
}
405405

406-
if (typeof listenerType !== 'function') {
406+
if (listenerType !== 'function') {
407407
throw new Error('Invalid listener type: expected a function, got a ' + listenerType);
408408
}
409409

@@ -714,7 +714,7 @@ Kuzzle.prototype.removeAllListeners = function (event) {
714714
throw new Error('[' + event + '] is not a known event. Known events: ' + knownEvents.toString());
715715
}
716716

717-
this.eventsListeners[event] = [];
717+
this.eventListeners[event] = [];
718718
} else {
719719
knownEvents.forEach(function (eventName) {
720720
self.eventListeners[eventName] = [];
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
var
2+
should = require('should'),
3+
rewire = require('rewire'),
4+
Kuzzle = rewire('../../src/kuzzle');
5+
6+
describe('Kuzzle: listeners management', () => {
7+
var
8+
kuzzle,
9+
listenerIds;
10+
11+
beforeEach(function () {
12+
var stublistener = function () {};
13+
14+
kuzzle = new Kuzzle('foo');
15+
listenerIds = [];
16+
17+
listenerIds.push(kuzzle.addListener('subscribed', stublistener));
18+
listenerIds.push(kuzzle.addListener('subscribed', stublistener));
19+
listenerIds.push(kuzzle.addListener('subscribed', stublistener));
20+
listenerIds.push(kuzzle.addListener('subscribed', stublistener));
21+
kuzzle.addListener('unsubscribed', stublistener);
22+
kuzzle.addListener('unsubscribed', stublistener);
23+
kuzzle.addListener('unsubscribed', stublistener);
24+
kuzzle.addListener('disconnected', stublistener);
25+
kuzzle.addListener('disconnected', stublistener);
26+
kuzzle.addListener('reconnected', stublistener);
27+
});
28+
29+
describe('#addListener', function () {
30+
it('should properly add new listeners to events', function () {
31+
should(kuzzle.eventListeners['subscribed'].length).be.exactly(4);
32+
should(kuzzle.eventListeners['unsubscribed'].length).be.exactly(3);
33+
should(kuzzle.eventListeners['disconnected'].length).be.exactly(2);
34+
should(kuzzle.eventListeners['reconnected'].length).be.exactly(1);
35+
});
36+
37+
it('should throw an error if trying to adding a listener to an unknown event', function () {
38+
try {
39+
kuzzle.addListener('foo', function () {});
40+
should.fail('success', 'failure', 'Should have failed to add a listener to unknown event "foo"', '');
41+
}
42+
catch (e) { }
43+
});
44+
45+
it('should throw an error when providing a non-function listener argument', function () {
46+
try {
47+
kuzzle.addListener('subscribed', 'bar');
48+
should.fail('success', 'failure', 'Should have failed to add a string listener', '');
49+
}
50+
catch (e) { }
51+
});
52+
});
53+
54+
describe('#removeAllListeners', function () {
55+
it('should remove all registered listeners on a given event when asked to', function () {
56+
kuzzle.removeAllListeners('disconnected');
57+
58+
should(kuzzle.eventListeners['subscribed'].length).be.exactly(4);
59+
should(kuzzle.eventListeners['unsubscribed'].length).be.exactly(3);
60+
should(kuzzle.eventListeners['disconnected'].length).be.exactly(0);
61+
should(kuzzle.eventListeners['reconnected'].length).be.exactly(1);
62+
});
63+
64+
it('should remove all registered listeners on all events when providing no event argument', function () {
65+
kuzzle.removeAllListeners();
66+
67+
should(kuzzle.eventListeners['subscribed'].length).be.exactly(0);
68+
should(kuzzle.eventListeners['unsubscribed'].length).be.exactly(0);
69+
should(kuzzle.eventListeners['disconnected'].length).be.exactly(0);
70+
should(kuzzle.eventListeners['reconnected'].length).be.exactly(0);
71+
});
72+
73+
it('should throw an error when an unknown event is provided', function () {
74+
try {
75+
kuzzle.removeAllListeners('foo');
76+
should.fail('success', 'failure', 'Should have failed removing listeners with an unknown event', '');
77+
}
78+
catch (e) {
79+
should(kuzzle.eventListeners['subscribed'].length).be.exactly(4);
80+
should(kuzzle.eventListeners['unsubscribed'].length).be.exactly(3);
81+
should(kuzzle.eventListeners['disconnected'].length).be.exactly(2);
82+
should(kuzzle.eventListeners['reconnected'].length).be.exactly(1);
83+
}
84+
});
85+
});
86+
87+
describe('#removeListener', function () {
88+
it('should remove any one listener from the listener list', function () {
89+
var listener = kuzzle.eventListeners['subscribed'].filter(l => { return l.id === listenerIds[2]});
90+
91+
should(listener.length).be.exactly(1);
92+
kuzzle.removeListener('subscribed', listenerIds[2]);
93+
listener = kuzzle.eventListeners['subscribed'].filter(l => { return l.id === listenerIds[2]});
94+
should(listener.length).be.exactly(0);
95+
should(kuzzle.eventListeners['subscribed'].length).be.exactly(3);
96+
should(kuzzle.eventListeners['unsubscribed'].length).be.exactly(3);
97+
should(kuzzle.eventListeners['disconnected'].length).be.exactly(2);
98+
should(kuzzle.eventListeners['reconnected'].length).be.exactly(1);
99+
});
100+
101+
it('should throw an error when trying to remove a listener from an unknown event', function () {
102+
try {
103+
kuzzle.removeListener('foo', 'bar');
104+
should.fail('success', 'failure', 'Should have failed removing listeners with an unknown event', '');
105+
}
106+
catch (e) {
107+
should(kuzzle.eventListeners['subscribed'].length).be.exactly(4);
108+
should(kuzzle.eventListeners['unsubscribed'].length).be.exactly(3);
109+
should(kuzzle.eventListeners['disconnected'].length).be.exactly(2);
110+
should(kuzzle.eventListeners['reconnected'].length).be.exactly(1);
111+
}
112+
});
113+
114+
it('should do nothing if the provided listener id does not exist', function () {
115+
kuzzle.removeListener('subscribed', 'foo');
116+
should(kuzzle.eventListeners['subscribed'].length).be.exactly(4);
117+
should(kuzzle.eventListeners['unsubscribed'].length).be.exactly(3);
118+
should(kuzzle.eventListeners['disconnected'].length).be.exactly(2);
119+
should(kuzzle.eventListeners['reconnected'].length).be.exactly(1);
120+
});
121+
});
122+
});

test/kuzzle/offlineQueue.test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,18 @@ describe('Kuzzle: offline queue management', () => {
111111
}, numRequests * kuzzle.replayInterval + 10)
112112
});
113113
});
114+
115+
describe('#flushing the queue', function () {
116+
it ('should empty the queue when asked to', function () {
117+
var kuzzle = new Kuzzle('foo');
118+
119+
kuzzle.offlineQueue.push({ts: 'foo', query: {}, cb: function () {}});
120+
kuzzle.offlineQueue.push({ts: 'foo', query: {}, cb: function () {}});
121+
kuzzle.offlineQueue.push({ts: 'foo', query: {}, cb: function () {}});
122+
kuzzle.offlineQueue.push({ts: 'foo', query: {}, cb: function () {}});
123+
124+
kuzzle.flushQueue();
125+
should(kuzzle.offlineQueue.length).be.exactly(0);
126+
});
127+
});
114128
});

0 commit comments

Comments
 (0)