import { triggerEvent, insertHtml, removeElement, byId, generateId } from './assets/helpers'; import delegate, { delegateHandler } from '../delegate'; const delegateID = generateId('Delegate'); const childID = generateId('Child'); describe('"delegate"', () => { describe('"delegateHandler"', () => { it('Calls handler when event target matches the delegation', () => { const cb = jest.fn(); const handler = delegateHandler('body', cb); document.addEventListener('click', handler); triggerEvent('click', document.body); document.removeEventListener('click', handler); expect(cb).toHaveBeenCalledTimes(1); }); it('Does not call handler when event target does not match delegation', () => { insertHtml(`
`); const cb = jest.fn(); const handler = delegateHandler('#Delegate', cb); document.addEventListener('click', handler); triggerEvent('click', document.body); document.removeEventListener('click', handler); expect(cb).toHaveBeenCalledTimes(0); removeElement(delegateID); }); it('Calls handler when event target is a child of delegation target', () => { insertHtml(`