fonteva-design-guide
Version:
## Dev, Build and Test
79 lines (69 loc) • 2.99 kB
JavaScript
import { createElement } from 'lwc';
import Lookup from 'c/pfmInputLookup';
describe('c-pfm-input-lookup rendering', () => {
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('renders without any list items as default', () => {
// Create element
const element = createElement('c-pfm-input-lookup', {
is: Lookup
});
document.body.appendChild(element);
// Query for rendered list items
const listItemEls = element.shadowRoot.querySelectorAll('li');
expect(listItemEls.length).toBe(0);
});
it('renders single entry (no selection)', () => {
// Create element
const element = createElement('c-pfm-input-lookup', {
is: Lookup
});
element.isMultiEntry = false;
document.body.appendChild(element);
// Verify selected icon
const selIcon = element.shadowRoot.querySelector('lightning-icon');
expect(selIcon.alternativeText).toBe('Selected item icon');
// Verify clear selection button
const clearSelButton = element.shadowRoot.querySelector('button');
expect(clearSelButton.title).toBe('Remove selected option');
// Verify result list is NOT rendered
const selList = element.shadowRoot.querySelectorAll('ul.slds-listbox_inline');
expect(selList.length).toBe(0);
});
it('renders multi entry (no selection)', () => {
// Create element
const element = createElement('c-pfm-input-lookup', {
is: Lookup
});
element.isMultiEntry = true;
document.body.appendChild(element);
// Verify selected icon is NOT rendered
const selIcon = element.shadowRoot.querySelectorAll('lightning-icon');
expect(selIcon.length).toBe(1);
// Verify clear selection button is NOT rendered
const clearSelButton = element.shadowRoot.querySelectorAll('button');
expect(clearSelButton.length).toBe(0);
// Verify result list is rendered
const selList = element.shadowRoot.querySelectorAll('ul.slds-listbox_inline');
expect(selList.length).toBe(1);
});
it('renders errors', () => {
// Create element
const element = createElement('c-pfm-input-lookup', {
is: Lookup
});
element.errors = [
{ id: 'e1', message: 'Sample error 1' },
{ id: 'e2', message: 'Sample error 2' }
];
document.body.appendChild(element);
// Verify errors
const errors = element.shadowRoot.querySelectorAll('label.form-error');
expect(errors.length).toBe(2);
expect(errors[0].textContent).toBe('Sample error 1');
});
});