UNPKG

listen-js

Version:

Easily add, remove, and trigger events on anything

74 lines (66 loc) 3.11 kB
var sinon = require('sinon'); var TestUtils = require('test-utils'); var assert = require('assert'); describe('Listen', function () { it('registering an event listener on an object and then triggering it calls the listener function', function () { var Listen = require('../src/listen'); var eventName = 'test:event'; var eventObj = {}; Listen.createTarget(eventObj); var eventListener = sinon.spy(); eventObj.addEventListener(eventName, eventListener); eventObj.dispatchEvent(eventName); assert.equal(eventListener.callCount, 1); Listen.destroyTarget(eventObj); }); it('un-registering an event listener on an object and then triggering it does not call the listener function', function () { var Listen = require('../src/listen'); var eventName = 'my:event'; var eventObj = {}; Listen.createTarget(eventObj); var eventListener = sinon.spy(); eventObj.addEventListener(eventName, eventListener); eventObj.removeEventListener(eventName, eventListener); eventObj.dispatchEvent(eventName); assert.equal(eventListener.callCount, 0); Listen.destroyTarget(eventObj); }); it('should call a listener who has been added to an object, even if createTarget is called on it again', function () { var Listen = require('../src/listen'); var eventName = 'evt:event2'; var eventObj = {}; var eventListener = sinon.spy(); Listen.createTarget(eventObj); eventObj.addEventListener(eventName, eventListener); Listen.createTarget(eventObj); eventObj.dispatchEvent(eventName); assert.equal(eventListener.callCount, 1); Listen.destroyTarget(eventObj); }); it('should not call a listener after its target is destroyed', function () { var Listen = require('../src/listen'); var eventName = 'destroyed:event'; var eventObj = {}; Listen.createTarget(eventObj); var eventListener = sinon.spy(); eventObj.addEventListener(eventName, eventListener); eventObj.removeEventListener(eventName, eventListener); Listen.destroyTarget(eventObj); eventObj.dispatchEvent(eventName); assert.equal(eventListener.callCount, 0); }); it('registering multiple event listeners on an object and then triggering it calls each listener function', function () { var Listen = require('../src/listen'); var eventName = 'test:event'; var eventObj = {}; Listen.createTarget(eventObj); var firstEventListener = sinon.spy(); var secondEventListener = sinon.spy(); eventObj.addEventListener(eventName, firstEventListener); eventObj.addEventListener(eventName, secondEventListener); eventObj.dispatchEvent(eventName); assert.equal(firstEventListener.callCount, 1, 'first listener was called'); assert.equal(secondEventListener.callCount, 1, 'second listener was called'); Listen.destroyTarget(eventObj); }); });