{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-core/src/client/reactive/test/utils/event-target.spec.js"],"names":["chai","expect","sinon","sinonChai","EventTarget","use","describe","it","target","to","respondTo","spy1","spy","spy2","addEventListener","dispatchEvent","have","been","calledOnce","not","be","called","reset","calledBefore","removeEventListener","param1","param2","calledWith","spy3","listeners","getEventListeners","include"],"mappings":"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","file":"event-target.spec.js","sourcesContent":["\nimport chai, {expect} from 'src/external/chai.js';\nimport sinon from 'src/external/sinon-3.2.1.js';\nimport sinonChai from 'src/external/sinon-chai.js';\nchai.use(sinonChai);\n\nimport EventTarget from '../../utils/event-target.js';\n\ndescribe('EventTarget', () => {\n\n    it('support the EventTarget interface', () => {\n      const target = new EventTarget();\n      expect(target).to.respondTo('addEventListener');\n      expect(target).to.respondTo('removeEventListener');\n      expect(target).to.respondTo('dispatchEvent'); // #TODO: we do not fully conform with the EventTarget interface, but thats okay\n      expect(target).to.respondTo('getEventListeners');\n    });\n\n    it('calls registered listeners', () => {\n      const target = new EventTarget();\n      const spy1 = sinon.spy();\n      const spy2 = sinon.spy();\n\n      target.addEventListener('key', spy1);\n      target.dispatchEvent('key');\n      expect(spy1).to.have.been.calledOnce;\n      expect(spy2).not.to.be.called;\n      spy1.reset();\n\n      target.addEventListener('key', spy2);\n      target.dispatchEvent('key');\n      expect(spy1).to.have.been.calledOnce;\n      expect(spy2).to.have.been.calledOnce;\n      expect(spy1).to.be.calledBefore(spy2);\n      spy1.reset();\n      spy2.reset();\n\n      target.removeEventListener('key', spy1);\n      target.dispatchEvent('key');\n      expect(spy1).not.to.be.called;\n      expect(spy2).to.have.been.calledOnce;\n      spy1.reset();\n      spy2.reset();\n    });\n\n    it('applies the given parameters', () => {\n      const target = new EventTarget();\n      const spy1 = sinon.spy();\n      const spy2 = sinon.spy();\n\n      target.addEventListener('key', spy1);\n      target.addEventListener('key', spy2);\n      const param1 = 42;\n      const param2 = 17;\n      target.dispatchEvent('key', param1, param2);\n      expect(spy1).to.have.been.calledOnce;\n      expect(spy1).to.have.been.calledWith(param1, param2);\n      expect(spy2).to.have.been.calledOnce;\n      expect(spy2).to.have.been.calledWith(param1, param2);\n    });\n\n    it('get all listeners', () => {\n      const target = new EventTarget();\n      const spy1 = sinon.spy();\n      const spy2 = sinon.spy();\n      const spy3 = sinon.spy();\n\n      target.addEventListener('key', spy1);\n      target.addEventListener('key', spy2);\n      \n      const listeners = target.getEventListeners('key');\n      expect(listeners).to.include(spy1)\n      expect(listeners).to.include(spy2)\n      expect(listeners).not.to.include(spy3);\n    });\n\n});\n\n\n"]}