UNPKG

@dbg-riskit/angular-testing

Version:

60 lines 7.77 kB
import { tick } from '@angular/core/testing'; /** Button events to pass to `DebugElement.triggerEventHandler` for RouterLink event handler */ export const BUTTON_CLICK_EVENTS = { left: { button: 0 }, right: { button: 2 } }; /** Simulate element click. Defaults to mouse left-button click event. */ export function click(el, eventObj = BUTTON_CLICK_EVENTS.left) { if (el instanceof HTMLElement) { el.click(); } else { el.triggerEventHandler('click', eventObj); } } export function setNgModelValue(element, value, realAsync = false) { if (!(element.nativeElement instanceof HTMLInputElement)) { throw new Error('Not an instance of HTMLInputElement'); } const input = element.nativeElement; input.value = value; dispatchEvent(input, 'input'); // tell Angular if (!realAsync) { tick(); } } export function setNgModelSelectValue(element, selectedIndex, realAsync = false) { if (!(element.nativeElement instanceof HTMLSelectElement)) { throw new Error('Not an instance of HTMLInputElement'); } const input = element.nativeElement; input.selectedIndex = selectedIndex; dispatchEvent(input, 'change'); // tell Angular if (!realAsync) { tick(); } } export function dispatchEvent(element, eventName) { if (element instanceof HTMLElement) { element.dispatchEvent(newEvent(eventName)); } else if (element instanceof Window) { element.dispatchEvent(newEvent(eventName)); } else { element.nativeElement.dispatchEvent(newEvent(eventName)); } } /** * Create custom DOM event the old fashioned way * * https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent * Although officially deprecated, some browsers (phantom) don't accept the preferred "new Event(eventName)" */ export function newEvent(eventName, bubbles = false, cancelable = false) { const evt = document.createEvent('CustomEvent'); // MUST be 'CustomEvent' evt.initCustomEvent(eventName, bubbles, cancelable, null); return evt; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci10ZXN0aW5nL3NyYy9saWIvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUzQywrRkFBK0Y7QUFDL0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDL0IsSUFBSSxFQUFHLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBQztJQUNsQixLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFDO0NBQ3JCLENBQUM7QUFFRix5RUFBeUU7QUFDekUsTUFBTSxVQUFVLEtBQUssQ0FBQyxFQUE4QixFQUFFLFdBQWdCLG1CQUFtQixDQUFDLElBQUk7SUFDMUYsSUFBSSxFQUFFLFlBQVksV0FBVyxFQUFFO1FBQzNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUNkO1NBQU07UUFDSCxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzdDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBcUIsRUFBRSxLQUFhLEVBQUUsU0FBUyxHQUFHLEtBQUs7SUFDbkYsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsWUFBWSxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztLQUMxRDtJQUNELE1BQU0sS0FBSyxHQUFxQixPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3RELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXBCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlO0lBQzlDLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDWixJQUFJLEVBQUUsQ0FBQztLQUNWO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxPQUFxQixFQUFFLGFBQXFCLEVBQUUsU0FBUyxHQUFHLEtBQUs7SUFDakcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsWUFBWSxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztLQUMxRDtJQUNELE1BQU0sS0FBSyxHQUFzQixPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3ZELEtBQUssQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBRXBDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlO0lBQy9DLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDWixJQUFJLEVBQUUsQ0FBQztLQUNWO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNEMsRUFBRSxTQUFpQjtJQUN6RixJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUU7UUFDaEMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUM5QztTQUFNLElBQUksT0FBTyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQzlDO1NBQU07UUFDSCxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUM1RDtBQUNMLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsU0FBaUIsRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLFVBQVUsR0FBRyxLQUFLO0lBQzNFLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBRSx3QkFBd0I7SUFDMUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RlYnVnRWxlbWVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7dGlja30gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuLyoqIEJ1dHRvbiBldmVudHMgdG8gcGFzcyB0byBgRGVidWdFbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXJgIGZvciBSb3V0ZXJMaW5rIGV2ZW50IGhhbmRsZXIgKi9cbmV4cG9ydCBjb25zdCBCVVRUT05fQ0xJQ0tfRVZFTlRTID0ge1xuICAgIGxlZnQgOiB7YnV0dG9uOiAwfSxcbiAgICByaWdodDoge2J1dHRvbjogMn1cbn07XG5cbi8qKiBTaW11bGF0ZSBlbGVtZW50IGNsaWNrLiBEZWZhdWx0cyB0byBtb3VzZSBsZWZ0LWJ1dHRvbiBjbGljayBldmVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGljayhlbDogRGVidWdFbGVtZW50IHwgSFRNTEVsZW1lbnQsIGV2ZW50T2JqOiBhbnkgPSBCVVRUT05fQ0xJQ0tfRVZFTlRTLmxlZnQpOiB2b2lkIHtcbiAgICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBlbC5jbGljaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVsLnRyaWdnZXJFdmVudEhhbmRsZXIoJ2NsaWNrJywgZXZlbnRPYmopO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE5nTW9kZWxWYWx1ZShlbGVtZW50OiBEZWJ1Z0VsZW1lbnQsIHZhbHVlOiBzdHJpbmcsIHJlYWxBc3luYyA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCEoZWxlbWVudC5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYW4gaW5zdGFuY2Ugb2YgSFRNTElucHV0RWxlbWVudCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgZGlzcGF0Y2hFdmVudChpbnB1dCwgJ2lucHV0Jyk7IC8vIHRlbGwgQW5ndWxhclxuICAgIGlmICghcmVhbEFzeW5jKSB7XG4gICAgICAgIHRpY2soKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXROZ01vZGVsU2VsZWN0VmFsdWUoZWxlbWVudDogRGVidWdFbGVtZW50LCBzZWxlY3RlZEluZGV4OiBudW1iZXIsIHJlYWxBc3luYyA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCEoZWxlbWVudC5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGFuIGluc3RhbmNlIG9mIEhUTUxJbnB1dEVsZW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXQ6IEhUTUxTZWxlY3RFbGVtZW50ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGlucHV0LnNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4O1xuXG4gICAgZGlzcGF0Y2hFdmVudChpbnB1dCwgJ2NoYW5nZScpOyAvLyB0ZWxsIEFuZ3VsYXJcbiAgICBpZiAoIXJlYWxBc3luYykge1xuICAgICAgICB0aWNrKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChlbGVtZW50OiBEZWJ1Z0VsZW1lbnQgfCBIVE1MRWxlbWVudCB8IFdpbmRvdywgZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXdFdmVudChldmVudE5hbWUpKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBXaW5kb3cpIHtcbiAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KGV2ZW50TmFtZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KGV2ZW50TmFtZSkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgY3VzdG9tIERPTSBldmVudCB0aGUgb2xkIGZhc2hpb25lZCB3YXlcbiAqXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnQvaW5pdEV2ZW50XG4gKiBBbHRob3VnaCBvZmZpY2lhbGx5IGRlcHJlY2F0ZWQsIHNvbWUgYnJvd3NlcnMgKHBoYW50b20pIGRvbid0IGFjY2VwdCB0aGUgcHJlZmVycmVkIFwibmV3IEV2ZW50KGV2ZW50TmFtZSlcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3RXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGJ1YmJsZXMgPSBmYWxzZSwgY2FuY2VsYWJsZSA9IGZhbHNlKTogQ3VzdG9tRXZlbnQge1xuICAgIGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpOyAgLy8gTVVTVCBiZSAnQ3VzdG9tRXZlbnQnXG4gICAgZXZ0LmluaXRDdXN0b21FdmVudChldmVudE5hbWUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIG51bGwpO1xuICAgIHJldHVybiBldnQ7XG59XG4iXX0=