fonteva-design-guide
Version:
## Dev, Build and Test
59 lines (51 loc) • 1.84 kB
JavaScript
import { createElement } from 'lwc';
import Lookup from 'c/pfmInputLookup';
const SAMPLE_SEARCH_RAW = 'Sample search* ';
const SAMPLE_SEARCH_CLEAN = 'sample search';
const SAMPLE_SEARCH_ITEMS = [
{
id: 'id1',
icon: 'standard:default',
title: 'Sample item 1',
subtitle: 'sub1'
},
{
id: 'id2',
icon: 'standard:default',
title: 'Sample item 2',
subtitle: 'sub2'
}
];
describe('c-pfm-input-lookup event fires', () => {
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('search event fires', () => {
jest.useFakeTimers();
// Create element with mock search handler
const mockSearchFn = jest.fn();
const element = createElement('c-pfm-input-lookup', {
is: Lookup
});
element.addEventListener('search', mockSearchFn);
element.isMultiEntry = true;
element.selection = SAMPLE_SEARCH_ITEMS;
document.body.appendChild(element);
// Set search term and force input change
const searchInput = element.shadowRoot.querySelector('input');
searchInput.value = SAMPLE_SEARCH_RAW;
searchInput.dispatchEvent(new CustomEvent('input'));
// Disable search throttling
jest.runAllTimers();
// Check fired search event
expect(mockSearchFn).toHaveBeenCalledTimes(1);
const searchEvent = mockSearchFn.mock.calls[0][0];
expect(searchEvent.detail).toEqual({
searchTerm: SAMPLE_SEARCH_CLEAN,
selectedIds: ['id1', 'id2']
});
});
});