'use strict'; import chai from "chai" import {Link} from "../../../../source/dom/resource/link.mjs"; import {DataUrl} from "../../../../source/types/dataurl.mjs"; import {ID} from "../../../../source/types/id.mjs"; import {chaiDom} from "../../../util/chai-dom.mjs"; import {cleanupDOMFromTesting, initMutationObserverForTesting} from "../../../util/cleanupdom.mjs"; import {initJSDOM} from "../../../util/jsdom.mjs"; let expect = chai.expect; chai.use(chaiDom); describe('Link', function () { before(function (done) { initJSDOM().then(() => { done() }); }); beforeEach(() => { initMutationObserverForTesting() }) afterEach(() => { cleanupDOMFromTesting(); }) describe('Link()', function () { this.timeout(5000); it('connect().available()', function (done) { const link = new Link({ href: new DataUrl('', 'text/css').toString(), rel: 'stylesheet' }); link.connect().available().then(() => { done() }).catch(e => done(e)); }) }); describe('External Link', () => { this.timeout(5000); let id = new ID('link').toString(); let link, url = 'https://alvine.io/main.min.css'; beforeEach(() => { link = new Link({ href: url, id: id, rel: 'stylesheet' }); }); it('append and remove Link ', (done) => { expect(link.isConnected()).to.be.false; link.connect().available().then(() => { expect(link.isConnected()).to.be.true; expect(document.querySelector('[href="' + url + '"]')).to.exist; document.getElementById(id).remove(); expect(link.isConnected()).to.be.false; expect(document.querySelector('[href="' + url + '"]')).not.to.exist; link.connect().available().then(() => { expect(link.isConnected()).to.be.true; expect(document.querySelector('[href="' + url + '"]')).to.exist; document.getElementById(id).remove(); expect(document.querySelector('[href="' + url + '"]')).not.to.exist; expect(link.isConnected()).to.be.false; done() }).catch(e => done(e)); }).catch(e => done(e)); }); }); });