rocket.chat.mqtt
Version:
It's a MQTT Server, using redis to scale horizontally.
67 lines (60 loc) • 2.57 kB
JavaScript
/*jshint node: true, mocha: true */
;
var expect = require('chai').expect,
qlobber = require('..'),
QlobberDedup = qlobber.QlobberDedup;
describe('shortcut', function ()
{
it('should add shortcut when adding', function ()
{
var matcher = new QlobberDedup({ cache_adds: true });
expect(matcher._shortcuts.size).to.equal(0);
matcher.add('a.b.c.d', 90);
expect(matcher._shortcuts.size).to.equal(1);
expect(matcher._shortcuts.get('a.b.c.d').size).to.equal(1);
expect(Array.from(matcher.match('a.b.c.d'))).to.eql([90]);
expect(matcher.test('a.b.c.d', 90)).to.equal(true);
});
it('should use shortcut when adding again', function ()
{
var matcher = new QlobberDedup({ cache_adds: true });
expect(matcher._shortcuts.size).to.equal(0);
matcher.add('a.b.c.d', 90);
matcher.add('a.b.c.d', 91);
expect(matcher._shortcuts.size).to.equal(1);
expect(matcher._shortcuts.get('a.b.c.d').size).to.equal(2);
expect(Array.from(matcher.match('a.b.c.d')).sort()).to.eql([90, 91]);
expect(matcher.test('a.b.c.d', 90)).to.equal(true);
expect(matcher.test('a.b.c.d', 91)).to.equal(true);
});
it('should remove shortcut when removing', function ()
{
var matcher = new QlobberDedup({ cache_adds: true });
expect(matcher._shortcuts.size).to.equal(0);
matcher.add('a.b.c.d', 90);
matcher.remove('a.b.c.d', 90);
expect(matcher._shortcuts.size).to.equal(0);
expect(Array.from(matcher.match('a.b.c.d'))).to.eql([]);
expect(matcher.test('a.b.c.d', 90)).to.equal(false);
});
it('should remove shortcut when removing all', function ()
{
var matcher = new QlobberDedup({ cache_adds: true });
expect(matcher._shortcuts.size).to.equal(0);
matcher.add('a.b.c.d', 90);
matcher.remove('a.b.c.d');
expect(matcher._shortcuts.size).to.equal(0);
expect(Array.from(matcher.match('a.b.c.d'))).to.eql([]);
expect(matcher.test('a.b.c.d', 90)).to.equal(false);
});
it('should clear shortcuts when matcher is cleared', function ()
{
var matcher = new QlobberDedup({ cache_adds: true });
expect(matcher._shortcuts.size).to.equal(0);
matcher.add('a.b.c.d', 90);
matcher.clear();
expect(matcher._shortcuts.size).to.equal(0);
expect(Array.from(matcher.match('a.b.c.d'))).to.eql([]);
expect(matcher.test('a.b.c.d', 90)).to.equal(false);
});
});