import el from './index' import define from '../../lib/define' import insertElement from '../../lib/test/insert-element' import getElement from '../../lib/test/get-element' import removeElement from '../../lib/test/remove-element' const {document} = window const ELEMENT = 'oo-modal' describe(`<${ELEMENT}>`, () => { before(() => { define(ELEMENT, el) }) it('Mount on document', () => { insertElement(ELEMENT) expect(getElement(ELEMENT)[0]).to.be.ok() }) it('"header" slot shows heading elements of modal', () => { removeElement(ELEMENT) document.body.insertAdjacentHTML('afterbegin', `
Title
`) const element = getElement(ELEMENT)[0] const slotHeader: HTMLSlotElement = element.shadowRoot.querySelector('slot[name=header]') const assigned = slotHeader.assignedNodes() expect(assigned[0].textContent).to.be('Title') }) it('"body" slot shows inner elements of modal', () => { removeElement(ELEMENT) document.body.insertAdjacentHTML('afterbegin', `
The content
`) const element = getElement(ELEMENT)[0] const slotHeader: HTMLSlotElement = element.shadowRoot.querySelector('slot[name=body]') const assigned = slotHeader.assignedNodes() expect(assigned[0].textContent).to.be('The content') }) it('Open this modal', () => { const element = getElement(ELEMENT)[0] element.setAttribute('data-open', 'enabled') const modal = element.shadowRoot.querySelector('.modal') expect(modal.clientHeight).to.be.above(0) }) it('Close this modal', () => { const element = getElement(ELEMENT)[0] element.setAttribute('data-open', 'disabled') const modal = element.shadowRoot.querySelector('.modal') expect(modal.clientHeight).to.be(0) }) describe('Dispatch event', () => { it('Dispatch "close" event when close this modal', done => { const element = insertElement(ELEMENT, new Map([['data-open', 'enabled']])) element.addEventListener('close', () => { done() }) element.setAttribute('data-open', 'disabled') }) }) after(() => { removeElement(ELEMENT) }) })