work.suroh.tk/node_modules/emitter-mixin/test/person.js

127 lines
3.0 KiB
JavaScript
Raw Normal View History

2019-12-02 12:22:45 +00:00
var emitter = require('../')
, Person = function () {}
, person = new Person;
emitter(Person.prototype);
describe('Person', function () {
it('should mixin emitter', function () {
person._events.should.equal(person._events);
Person.prototype._events.should.not.equal(person._events);
});
it('should emit properly', function () {
person.on('foo', function (a) {
a.should.eql('bar');
}).emit('foo', 'bar');
});
it('should register events properly', function () {
person.on('say', console.log)._events.say.should.equal(console.log);
})
});
describe('Person constructor', function () {
it('should eql `Person`', function () {
person.constructor.should.equal(Person);
})
})
describe('emitter()', function () {
it('should return the given `obj`', function () {
var obj = new Person();
emitter(obj).should.be.instanceOf(Person);
})
})
describe('emitter({})', function () {
var obj = emitter({});
describe('.on()', function () {
it('should work', function () {
obj.on('foo', console.log)
._events['foo'].should.equal(console.log)
})
})
describe('.removeListener()', function () {
it('should work', function () {
obj.removeListener('foo', console.log)
._events.should.eql({});
})
})
describe('.removeAllListeners()', function () {
it('should work', function () {
obj.on('foo', console.log)
.removeAllListeners()
._events.should.eql({});
})
})
describe('.once()', function () {
it('should work', function () {
obj.once('foo', console.log).emit('foo');
obj._events
.should
.eql({});
})
})
describe('.setMaxListeners()', function () {
it('should work', function () {
obj.setMaxListeners(10);
obj._maxListeners.should.eql(10);
})
})
describe('.listeners()', function () {
it('should return all listeners for event', function () {
obj.on('foo', console.log)
.listeners('foo')[0]
.should.equal(console.log);
obj.removeListener('foo', console.log);
})
})
describe('.emit()', function () {
it('should emit the given event with `args`', function () {
var args;
obj.on('foo', function () {
args = [].slice.call(arguments);
}).emit('foo', 'bar', 'baz');
args.should.eql(['bar', 'baz']);
})
})
describe('.off()', function () {
it('should remove all listeners if arguments are omitted', function () {
obj
.on('foo', function () {})
.on('bar', function () {})
.off()
._events
.should
.eql({});
})
it('should remove all listeners for `event`', function () {
obj.on('foo', function () {}).off('foo')
._events.should.have.property('foo', null);
})
it('should remove the given `listener` from `event`', function () {
obj.on('foo', console.log).on('foo', console.dir)
.off('foo', console.log)
.listeners('foo')
.should.not.include(console.log);
})
})
})