@lion/core
Version:
Core functionality that is shared across all Lion Web Components
42 lines (33 loc) • 1.36 kB
JavaScript
import { expect } from '@open-wc/testing';
import sinon from 'sinon';
import { EventTargetShim } from '../src/EventTargetShim.js';
describe('EventTargetShim', () => {
class NonElementClass extends EventTargetShim {}
it('implements "addEventListener"', async () => {
const nonElementClass = new NonElementClass();
const cb = sinon.spy();
nonElementClass.addEventListener('my-event', cb);
expect(cb).to.not.have.been.called;
nonElementClass.dispatchEvent(new Event('my-event'));
expect(cb).to.have.been.called;
});
it('implements "removeEventListener"', async () => {
const nonElementClass = new NonElementClass();
const cb = sinon.spy();
nonElementClass.addEventListener('my-event', cb);
expect(cb).to.not.have.been.called;
nonElementClass.dispatchEvent(new Event('my-event'));
expect(cb).to.have.been.calledOnce;
nonElementClass.removeEventListener('my-event', cb);
nonElementClass.dispatchEvent(new Event('my-event'));
expect(cb).to.have.been.calledOnce;
});
it('implements "dispatchEvent"', async () => {
const nonElementClass = new NonElementClass();
const cb = sinon.spy();
nonElementClass.addEventListener('my-event', cb);
expect(cb).to.not.have.been.called;
nonElementClass.dispatchEvent(new Event('my-event'));
expect(cb).to.have.been.called;
});
});