|
| 1 | +#============================================================================== |
| 2 | +# lib/emitter_wrapper.js module |
| 3 | +#============================================================================== |
| 4 | +describe 'emitter_wrapper', -> |
| 5 | + EmitterWrapper = require '../../lib/emitter_wrapper' |
| 6 | + events = require 'events' |
| 7 | + EventEmitter = events.EventEmitter |
| 8 | + |
| 9 | + emitter = null |
| 10 | + wrapped = null |
| 11 | + called = false |
| 12 | + |
| 13 | + beforeEach -> |
| 14 | + emitter = new EventEmitter() |
| 15 | + emitter.aMethod = (e) -> called = true |
| 16 | + emitter.on 'anEvent', emitter.aMethod |
| 17 | + wrapped = new EmitterWrapper(emitter) |
| 18 | + |
| 19 | + #=========================================================================== |
| 20 | + # wrapper.addListener |
| 21 | + #=========================================================================== |
| 22 | + describe 'addListener', -> |
| 23 | + aListener = (e) -> true |
| 24 | + |
| 25 | + it 'should add a listener to the wrapped emitter', -> |
| 26 | + wrapped.addListener 'anEvent', aListener |
| 27 | + expect(emitter.listeners('anEvent')).to.contain aListener |
| 28 | + |
| 29 | + it 'returns the wrapped emitter', -> |
| 30 | + expect(wrapped.addListener 'anEvent', aListener).to.equal wrapped |
| 31 | + |
| 32 | + #=========================================================================== |
| 33 | + # wrapper.removeAllListeners |
| 34 | + #=========================================================================== |
| 35 | + describe 'removeAllListeners', -> |
| 36 | + aListener = (e) -> true |
| 37 | + |
| 38 | + beforeEach -> |
| 39 | + wrapped.addListener 'anEvent', aListener |
| 40 | + |
| 41 | + it 'should remove listeners that were attached via the wrapper', -> |
| 42 | + wrapped.removeAllListeners() |
| 43 | + expect(emitter.listeners('anEvent')).not.to.contain aListener |
| 44 | + |
| 45 | + it 'should not remove listeners that were attached to the original emitter', -> |
| 46 | + wrapped.removeAllListeners() |
| 47 | + expect(emitter.listeners('anEvent')).to.contain emitter.aMethod |
| 48 | + |
| 49 | + it 'should remove only matching listeners when called with an event name', -> |
| 50 | + anotherListener = (e) -> true |
| 51 | + wrapped.addListener 'anotherEvent', anotherListener |
| 52 | + wrapped.removeAllListeners('anEvent') |
| 53 | + expect(emitter.listeners('anEvent')).not.to.contain aListener |
| 54 | + expect(emitter.listeners('anotherEvent')).to.contain anotherListener |
| 55 | + |
| 56 | + it 'returns the wrapped emitter', -> |
| 57 | + expect(wrapped.addListener 'anEvent', aListener).to.equal wrapped |
0 commit comments