donkey
Version:
EIP for JavaScript, node style
53 lines (48 loc) • 1.53 kB
JavaScript
var vows = require('vows');
var assert = require('assert');
var events = require('events');
var Filter = require('../../lib/node-donkey/processors/Filter');
var predicate = {'matches':function(exchange){return exchange}};
var e = new events.EventEmitter;
vows.describe('Filter pattern').addBatch({
'A Filter':{
topic: function(){
var f = new Filter({'predicate':predicate});
f.on('exchangeOut',function(exchange){
e.emit('exchangeOut',null,{'event':'exchangeOut','data':exchange});
});
f.on('exchangeDiscarded',function(exchange){
e.emit('exchangeDiscarded',null,{'event':'exchangeDiscarded','data':exchange});
});
return f
},
'when the predicate matches':{
topic: function(f){
e.on('exchangeOut',this.callback);
e.on('exchangeDiscarded',this.callback);
f.process(true);
e.removeAllListeners('exchangeOut');
e.removeAllListeners('exchangeDiscarded');
},
'should forward the exchange': function(err,a){
assert.equal('exchangeOut',a.event);
},
'and should not drop it': function(err,a){
assert.notEqual('exchangeDiscarded',a.event);
}
},
'when the predicate does not match':{
topic: function(f){
e.on('exchangeOut',this.callback);
e.on('exchangeDiscarded',this.callback);
f.process(false);
},
'should drop the exchange': function(err,a){
assert.equal('exchangeDiscarded',a.event);
},
'and should not forward it': function(err,a){
assert.notEqual('exchangeOut',a.event);
}
}
}
}).export(module);