fonteva-design-guide
Version:
## Dev, Build and Test
101 lines (79 loc) • 2.95 kB
JavaScript
import { createElement } from 'lwc';
import BUTTON from 'c/pfmButton';
describe('c-pfm-button', () => {
afterEach(() => {
// The jsdom instance is shared across test cases in a single file so reset the DOM
while (document.body.firstChild) {
document.body.removeChild(document.body.firstChild);
}
});
it('start button loader', () => {
const element = createElement('c-pfm-button', {
is: BUTTON
});
document.body.appendChild(element);
// Verify button loader
element.startLoader();
const loader = element.shadowRoot.querySelector('.js-load');
expect(loader).not.toBeNull();
});
it('stop button loader', () => {
const element = createElement('c-pfm-button', {
is: BUTTON
});
document.body.appendChild(element);
// Verify button loader
element.startLoader();
element.endLoader();
const loader = element.shadowRoot.querySelector('.js-load');
expect(loader).toBeNull();
});
it('render button theme: danger', () => {
const element = createElement('c-pfm-button', {
is: BUTTON
});
element.theme = 'danger';
document.body.appendChild(element);
// Verify theme
setTimeout(() => {
const theme = element.shadowRoot.querySelector('button').classList.contains('pfm-button_danger');
expect(theme).toBeFalsy();
}, 5);
});
it('render button icon', () => {
const element = createElement('c-pfm-button', {
is: BUTTON
});
element.icon = 'utility:add';
element.iconposition = 'left';
document.body.appendChild(element);
// Verify icon
setTimeout(() => {
const icon = element.shadowRoot.querySelector('lightning-icon');
expect(icon).not.toBeNull();
}, 5);
});
it('render button icon position', () => {
const element = createElement('c-pfm-button', {
is: BUTTON
});
element.icon = 'utility:add';
element.iconPosition = 'right';
document.body.appendChild(element);
// Verify icon position
const position = element.shadowRoot.querySelector('button > *:first-of-type');
expect(position === 'span').toBeFalsy();
});
it('render a button w/ multiple additional classes', () => {
const element = createElement('c-pfm-button', {
is: BUTTON
});
element.additionalClasses = 'foo bar';
document.body.appendChild(element);
// Verify icon position
setTimeout(() => {
const btn = element.shadowRoot.querySelector('button.foo.bar');
expect(btn).toBeTruthy();
});
});
});