pubnub
Version:
Publish & Subscribe Real-time Messaging with PubNub
146 lines (111 loc) • 3.33 kB
JavaScript
/* global describe, it */
import assert from 'assert';
import ListenerManager from '../../src/core/components/listener_manager';
describe('components/ListenerManager', () => {
it('supports removal of listeners', () => {
let listeners = new ListenerManager();
let bool1 = false;
let bool2 = false;
let listener1 = {
message() { bool1 = true; }
};
let listener2 = {
message() { bool2 = true; }
};
listeners.addListener(listener1);
listeners.addListener(listener2);
listeners.removeListener(listener2);
listeners.announceMessage('hi');
assert(bool1, 'bool1 was triggered');
assert(!bool2, 'bool2 was not triggered');
});
it('supports presence announcements', () => {
let listeners = new ListenerManager();
let bool1 = false;
let bool2 = false;
let bool3 = false;
let listener1 = {
presence() { bool1 = true; }
};
let listener2 = {
presence() { bool2 = true; }
};
let listener3 = {
message() { bool3 = true; },
status() { bool3 = true; }
};
listeners.addListener(listener1);
listeners.addListener(listener2);
listeners.addListener(listener3);
listeners.announcePresence('hi');
assert(bool1, 'bool1 was triggered');
assert(bool2, 'bool2 was triggered');
assert(!bool3, 'bool3 was not triggered');
});
it('supports status announcements', () => {
let listeners = new ListenerManager();
let bool1 = false;
let bool2 = false;
let bool3 = false;
let listener1 = {
status() { bool1 = true; }
};
let listener2 = {
status() { bool2 = true; }
};
let listener3 = {
message() { bool3 = true; },
presence() { bool3 = true; }
};
listeners.addListener(listener1);
listeners.addListener(listener2);
listeners.addListener(listener3);
listeners.announceStatus('hi');
assert(bool1, 'bool1 was triggered');
assert(bool2, 'bool2 was triggered');
assert(!bool3, 'bool3 was not triggered');
});
it('supports message announcements', () => {
let listeners = new ListenerManager();
let bool1 = false;
let bool2 = false;
let bool3 = false;
let listener1 = {
message() { bool1 = true; }
};
let listener2 = {
message() { bool2 = true; }
};
let listener3 = {
status() { bool3 = true; },
presence() { bool3 = true; }
};
listeners.addListener(listener1);
listeners.addListener(listener2);
listeners.addListener(listener3);
listeners.announceMessage('hi');
assert(bool1, 'bool1 was triggered');
assert(bool2, 'bool2 was triggered');
assert(!bool3, 'bool3 was not triggered');
});
it('announces network down events', () => {
let listeners = new ListenerManager();
let listener = {
status(status) {
assert.deepEqual(status, { category: 'PNNetworkDownCategory' });
}
};
listeners.addListener(listener);
listeners.announceNetworkDown();
});
it('announces network up events', () => {
let listeners = new ListenerManager();
let listener = {
status(status) {
assert.deepEqual(status, { category: 'PNNetworkUpCategory' });
}
};
listeners.addListener(listener);
listeners.announceNetworkUp();
});
});