2015-07-29 14:22:34 -07:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var should = require('chai').should();
|
|
|
|
var sinon = require('sinon');
|
|
|
|
var Bus = require('../lib/bus');
|
|
|
|
|
|
|
|
describe('Bus', function() {
|
|
|
|
|
|
|
|
describe('#subscribe', function() {
|
2015-08-31 06:00:00 -07:00
|
|
|
it('will call db and services subscribe function with the correct arguments', function() {
|
2015-08-06 13:19:36 -07:00
|
|
|
var subscribeDb = sinon.spy();
|
2015-08-31 06:00:00 -07:00
|
|
|
var subscribeService = sinon.spy();
|
2015-08-28 13:16:51 -07:00
|
|
|
var node = {
|
2015-08-31 06:00:00 -07:00
|
|
|
services: {
|
|
|
|
db: {
|
|
|
|
getPublishEvents: sinon.stub().returns([
|
|
|
|
{
|
|
|
|
name: 'dbtest',
|
|
|
|
scope: this,
|
|
|
|
subscribe: subscribeDb
|
|
|
|
}
|
|
|
|
])
|
|
|
|
},
|
|
|
|
service1: {
|
2015-07-29 14:22:34 -07:00
|
|
|
getPublishEvents: sinon.stub().returns([
|
|
|
|
{
|
|
|
|
name: 'test',
|
|
|
|
scope: this,
|
2015-08-31 06:00:00 -07:00
|
|
|
subscribe: subscribeService,
|
2015-07-29 14:22:34 -07:00
|
|
|
}
|
|
|
|
])
|
|
|
|
}
|
2015-08-28 13:16:51 -07:00
|
|
|
}
|
2015-07-29 14:22:34 -07:00
|
|
|
};
|
2015-08-28 13:16:51 -07:00
|
|
|
var bus = new Bus({node: node});
|
2015-08-06 13:19:36 -07:00
|
|
|
bus.subscribe('dbtest', 'a', 'b', 'c');
|
2015-07-29 14:22:34 -07:00
|
|
|
bus.subscribe('test', 'a', 'b', 'c');
|
2015-08-31 06:00:00 -07:00
|
|
|
subscribeService.callCount.should.equal(1);
|
2015-08-06 13:19:36 -07:00
|
|
|
subscribeDb.callCount.should.equal(1);
|
|
|
|
subscribeDb.args[0][0].should.equal(bus);
|
|
|
|
subscribeDb.args[0][1].should.equal('a');
|
|
|
|
subscribeDb.args[0][2].should.equal('b');
|
|
|
|
subscribeDb.args[0][3].should.equal('c');
|
2015-08-31 06:00:00 -07:00
|
|
|
subscribeService.args[0][0].should.equal(bus);
|
|
|
|
subscribeService.args[0][1].should.equal('a');
|
|
|
|
subscribeService.args[0][2].should.equal('b');
|
|
|
|
subscribeService.args[0][3].should.equal('c');
|
2015-07-29 14:22:34 -07:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('#unsubscribe', function() {
|
2015-08-31 06:00:00 -07:00
|
|
|
it('will call db and services unsubscribe function with the correct arguments', function() {
|
2015-08-06 13:19:36 -07:00
|
|
|
var unsubscribeDb = sinon.spy();
|
2015-08-31 06:00:00 -07:00
|
|
|
var unsubscribeService = sinon.spy();
|
2015-08-28 13:16:51 -07:00
|
|
|
var node = {
|
2015-08-31 06:00:00 -07:00
|
|
|
services: {
|
|
|
|
db: {
|
|
|
|
getPublishEvents: sinon.stub().returns([
|
|
|
|
{
|
|
|
|
name: 'dbtest',
|
|
|
|
scope: this,
|
|
|
|
unsubscribe: unsubscribeDb
|
|
|
|
}
|
|
|
|
])
|
|
|
|
},
|
|
|
|
service1: {
|
2015-07-29 14:22:34 -07:00
|
|
|
getPublishEvents: sinon.stub().returns([
|
|
|
|
{
|
|
|
|
name: 'test',
|
|
|
|
scope: this,
|
2015-08-31 06:00:00 -07:00
|
|
|
unsubscribe: unsubscribeService,
|
2015-07-29 14:22:34 -07:00
|
|
|
}
|
|
|
|
])
|
|
|
|
}
|
2015-08-28 13:16:51 -07:00
|
|
|
}
|
2015-07-29 14:22:34 -07:00
|
|
|
};
|
2015-08-28 13:16:51 -07:00
|
|
|
var bus = new Bus({node: node});
|
2015-08-06 13:19:36 -07:00
|
|
|
bus.unsubscribe('dbtest', 'a', 'b', 'c');
|
2015-07-29 14:22:34 -07:00
|
|
|
bus.unsubscribe('test', 'a', 'b', 'c');
|
2015-08-31 06:00:00 -07:00
|
|
|
unsubscribeService.callCount.should.equal(1);
|
2015-08-06 13:19:36 -07:00
|
|
|
unsubscribeDb.callCount.should.equal(1);
|
|
|
|
unsubscribeDb.args[0][0].should.equal(bus);
|
|
|
|
unsubscribeDb.args[0][1].should.equal('a');
|
|
|
|
unsubscribeDb.args[0][2].should.equal('b');
|
|
|
|
unsubscribeDb.args[0][3].should.equal('c');
|
2015-08-31 06:00:00 -07:00
|
|
|
unsubscribeService.args[0][0].should.equal(bus);
|
|
|
|
unsubscribeService.args[0][1].should.equal('a');
|
|
|
|
unsubscribeService.args[0][2].should.equal('b');
|
|
|
|
unsubscribeService.args[0][3].should.equal('c');
|
2015-07-29 14:22:34 -07:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2015-08-04 13:34:53 -07:00
|
|
|
describe('#close', function() {
|
|
|
|
it('will unsubscribe from all events', function() {
|
2015-08-06 13:19:36 -07:00
|
|
|
var unsubscribeDb = sinon.spy();
|
2015-08-31 06:00:00 -07:00
|
|
|
var unsubscribeService = sinon.spy();
|
2015-08-28 13:16:51 -07:00
|
|
|
var node = {
|
2015-08-31 06:00:00 -07:00
|
|
|
services: {
|
|
|
|
db: {
|
2015-08-04 13:34:53 -07:00
|
|
|
getPublishEvents: sinon.stub().returns([
|
2015-08-31 06:00:00 -07:00
|
|
|
{
|
|
|
|
name: 'dbtest',
|
|
|
|
scope: this,
|
|
|
|
unsubscribe: unsubscribeDb
|
|
|
|
}
|
|
|
|
])
|
|
|
|
},
|
|
|
|
service1: {
|
|
|
|
getPublishEvents: sinon.stub().returns([
|
|
|
|
{
|
|
|
|
name: 'test',
|
|
|
|
scope: this,
|
|
|
|
unsubscribe: unsubscribeService
|
|
|
|
}
|
2015-08-04 13:34:53 -07:00
|
|
|
])
|
|
|
|
}
|
2015-08-28 13:16:51 -07:00
|
|
|
}
|
2015-08-04 13:34:53 -07:00
|
|
|
};
|
2015-08-28 13:16:51 -07:00
|
|
|
var bus = new Bus({node: node});
|
2015-08-04 13:34:53 -07:00
|
|
|
bus.close();
|
|
|
|
|
2015-08-06 13:19:36 -07:00
|
|
|
unsubscribeDb.callCount.should.equal(1);
|
2015-08-31 06:00:00 -07:00
|
|
|
unsubscribeService.callCount.should.equal(1);
|
2015-08-06 13:19:36 -07:00
|
|
|
unsubscribeDb.args[0].length.should.equal(1);
|
2015-08-31 06:00:00 -07:00
|
|
|
unsubscribeDb.args[0][0].should.equal(bus);
|
|
|
|
unsubscribeService.args[0].length.should.equal(1);
|
|
|
|
unsubscribeService.args[0][0].should.equal(bus);
|
2015-08-04 13:34:53 -07:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2015-07-29 14:22:34 -07:00
|
|
|
});
|