mbus
Version:
If Node's EventEmitter and Eve were to have a child, it might look something like this
74 lines (58 loc) • 1.41 kB
JavaScript
var test = require('tape');
var bus = require('../')('test');
test('bus emits simple events', function(t) {
t.plan(1);
bus.once('foo', function(data) {
t.equal(data, 'bar');
});
bus('foo', 'bar');
});
test('clear deregisters all listeners', function(t) {
t.plan(1);
bus.once('foo', function(data) {
t.fail('Should not receive event');
});
setTimeout(function() {
t.pass('event not triggered');
}, 500);
bus.clear();
bus('foo', 'bar');
});
test('clear targeted handlers', function(t) {
var failTimer = setTimeout(function() {
t.fail('bar not triggered');
}, 1000);
t.plan(2);
bus.once('foo', function() {
t.fail('Should not receive event');
});
bus.once('bar', function() {
t.pass('received bar');
clearTimeout(failTimer);
});
setTimeout(function() {
t.pass('event not triggered');
}, 500);
bus.clear('foo');
bus('foo');
bus('bar');
});
test('clear targeted, nested handlers', function(t) {
var failTimer = setTimeout(function() {
t.fail('foo.baz not triggered');
}, 1000);
t.plan(2);
bus.once('foo.bar', function() {
t.fail('Should not receive event');
});
bus.once('foo.baz', function() {
t.pass('received foo.baz');
clearTimeout(failTimer);
});
setTimeout(function() {
t.pass('event not triggered');
}, 500);
bus.clear('foo.bar');
bus('foo.bar');
bus('foo.baz');
});