@schukai/monster
Version:
Monster is a simple library for creating fast, robust and lightweight websites.
130 lines (95 loc) • 3.4 kB
JavaScript
import {getGlobal} from "../../../../source/types/global.mjs";
import * as chai from 'chai';
import {chaiDom} from "../../../util/chai-dom.mjs";
import {initJSDOM} from "../../../util/jsdom.mjs";
import {ResizeObserverMock} from "../../../util/resize-observer.mjs";
let expect = chai.expect;
chai.use(chaiDom);
const global = getGlobal();
let html1 = `
<div id="test1">
</div>
`;
let html2 = `
<div id="test2">
<monster-state-button
tabindex="0"
data-monster-bind="path:values.checkbox"
data-monster-options='{
"url": "mock-data.json",
"mapping": {
"valuePath": "\${first_name} \${last_name}",
"keyPath": "id"
},
"type":"checkbox"
}'></monster-state-button>
</div>
`;
let StateButton;
describe('StateButton', function () {
after(function () {
})
before(function (done) {
initJSDOM().then(() => {
import("element-internals-polyfill").catch(e => done(e));
if(!global.ResizeObserver) {
global.ResizeObserver = ResizeObserverMock;
}
import("../../../../source/components/form/state-button.mjs").then((m) => {
StateButton = m['StateButton'];
done()
}).catch(e => done(e))
});
})
describe('new StateButton', function () {
beforeEach(() => {
let mocks = document.getElementById('mocks');
mocks.innerHTML = html1;
})
afterEach(() => {
let mocks = document.getElementById('mocks');
mocks.innerHTML = "";
})
describe('create from template', function () {
beforeEach(() => {
let mocks = document.getElementById('mocks');
mocks.innerHTML = html2;
});
afterEach(() => {
let mocks = document.getElementById('mocks');
mocks.innerHTML = "";
})
describe('create from template', function () {
it('should contains monster-state-button', function () {
expect(document.getElementById('test2')).contain.html('<monster-state-button');
});
});
});
describe('document.createElement', function () {
it('should instance of state-button', function () {
expect(document.createElement('monster-state-button')).is.instanceof(StateButton);
});
});
});
describe('document.createElement()', function () {
afterEach(() => {
let mocks = document.getElementById('mocks');
mocks.innerHTML = "";
})
it('should have no options', function (done) {
let mocks = document.getElementById('mocks');
const button = document.createElement('monster-state-button');
mocks.appendChild(button);
setTimeout(() => {
try {
const options = button.shadowRoot.querySelector('button');
expect(options).is.instanceof(HTMLButtonElement);
expect(options.hasChildNodes()).to.be.true;
} catch (e) {
return done(e);
}
done();
}, 0)
});
});
});