monkey-bus
Version:
A micro-service bus framework for RabbitMQ
68 lines (53 loc) • 1.93 kB
JavaScript
;
var chai = require("chai");
var assert = chai.assert;
var Promise = require('bluebird');
function reportErr(err){
setImmediate(function(){
console.log(err.stack);
throw err;
});
}
var config = require('./config.json');
var bus = require('../src/bus')(config);
describe('exception', function () {
describe('throwing exception in subscriber', function(){
it("synchron exception", function(done) {
const eventName = 'test.event.throwing-exception-synchron';
var event = bus.event(eventName);
var doneCalled = false;
bus.exception('#').catch(function(exp){
if (!doneCalled) {
setTimeout(done, 250);
doneCalled = true;
}
}).then(function () {
event.subscribe(function () {
throw new Error('test exception');
}).then(function(){
event.publish();
});
});
});
it("one should be able to subscribe to exception", function (done) {
var exceptionMessage = 'some exception second';
var event = bus.event('throwing-exception-asynchron');
var doneCalled = false;
bus.exception(exceptionMessage).catch(function(exception){
assert.equal(exception.message, exceptionMessage);
if (!doneCalled) {
setTimeout(done, 500);
doneCalled = true;
}
}).then(function() {
return event.subscribe(function () {
return Promise.delay(10).then(function () {
throw new Error(exceptionMessage);
});
});
}).then(function () {
event.publish();
});
});
});
});