EventEmitterTests.coffee 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. define ['utils/EventEmitter'], (EventEmitter) ->
  2. describe 'EventEmitter', () ->
  3. beforeEach () ->
  4. @eventEmitter = new EventEmitter
  5. it 'calls listeners', () ->
  6. cb1 = sinon.stub()
  7. cb2 = sinon.stub()
  8. @eventEmitter.on 'foo', cb1
  9. @eventEmitter.on 'bar', cb2
  10. @eventEmitter.trigger 'foo'
  11. expect(cb1).to.have.been.called
  12. expect(cb2).to.not.have.been.called
  13. it 'calls multiple listeners', () ->
  14. cb1 = sinon.stub()
  15. cb2 = sinon.stub()
  16. @eventEmitter.on 'foo', cb1
  17. @eventEmitter.on 'foo', cb2
  18. @eventEmitter.trigger 'foo'
  19. expect(cb1).to.have.been.called
  20. expect(cb2).to.have.been.called
  21. it 'calls listeners with namespace', () ->
  22. cb1 = sinon.stub()
  23. cb2 = sinon.stub()
  24. @eventEmitter.on 'foo', cb1
  25. @eventEmitter.on 'foo.bar', cb2
  26. @eventEmitter.trigger 'foo'
  27. expect(cb1).to.have.been.called
  28. expect(cb2).to.have.been.called
  29. it 'removes listeners', () ->
  30. cb = sinon.stub()
  31. @eventEmitter.on 'foo', cb
  32. @eventEmitter.off 'foo'
  33. @eventEmitter.trigger 'foo'
  34. expect(cb).to.not.have.been.called
  35. it 'removes namespaced listeners', () ->
  36. cb = sinon.stub()
  37. @eventEmitter.on 'foo.bar', cb
  38. @eventEmitter.off 'foo.bar'
  39. @eventEmitter.trigger 'foo'
  40. expect(cb).to.not.have.been.called
  41. it 'does not remove unnamespaced listeners if off called with namespace', () ->
  42. cb1 = sinon.stub()
  43. cb2 = sinon.stub()
  44. @eventEmitter.on 'foo', cb1
  45. @eventEmitter.on 'foo.bar', cb2
  46. @eventEmitter.off 'foo.bar'
  47. @eventEmitter.trigger 'foo'
  48. expect(cb1).to.have.been.called
  49. expect(cb2).to.not.have.been.called