@ngneat/spectator
Version:
A powerful tool to simplify your Angular tests
55 lines • 5.6 kB
JavaScript
/**
* Credit - Angular Material
*/
import { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './event-creators';
/**
* Utility to dispatch any event on a Node.
*
* @publicApi
*/
export function dispatchEvent(node, event) {
node.dispatchEvent(event);
return event;
}
/**
* Shorthand to dispatch a fake event on a specified node.
*
* dispatchFakeEvent(element, 'mousedown');
*
* @publicApi
*/
export function dispatchFakeEvent(node, type, canBubble) {
return dispatchEvent(node, createFakeEvent(type, canBubble));
}
/**
* Shorthand to dispatch a keyboard event with a specified key.
*
* dispatchKeyboardEvent(calendarBodyEl, 'keydown', 'LEFT_ARROW');
*
* @publicApi
*/
export function dispatchKeyboardEvent(node, type, keyOrKeyCode, target) {
return dispatchEvent(node, createKeyboardEvent(type, keyOrKeyCode, target));
}
/**
* Shorthand to dispatch a mouse event on the specified coordinates.
*
* dispatchMouseEvent(rippleTarget, 'mousedown', 50, 75);
* dispatchMouseEvent(rippleTarget, 'mouseup');
*
* @publicApi
*/
export function dispatchMouseEvent(node, type, x = 0, y = 0, event = createMouseEvent(type, x, y)) {
return dispatchEvent(node, event);
}
/**
* Shorthand to dispatch a touch event on the specified coordinates.
*
* dispatchTouchEvent(rippleTarget, 'touchstart');
*
* @publicApi
*/
export function dispatchTouchEvent(node, type, x = 0, y = 0) {
return dispatchEvent(node, createTouchEvent(type, x, y));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2gtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlY3RhdG9yL3NyYy9saWIvZGlzcGF0Y2gtZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzVHOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUEwQixJQUFtQixFQUFFLEtBQVE7SUFDbEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxQixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBbUIsRUFBRSxJQUFZLEVBQUUsU0FBbUI7SUFDdEYsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxJQUFVLEVBQ1YsSUFBWSxFQUNaLFlBQW9ELEVBQ3BELE1BQWdCO0lBRWhCLE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQVUsRUFDVixJQUFZLEVBQ1osSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsUUFBb0IsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFaEQsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBcUMsRUFBRSxJQUFZLEVBQUUsSUFBWSxDQUFDLEVBQUUsSUFBWSxDQUFDO0lBQ2xILE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlZGl0IC0gQW5ndWxhciBNYXRlcmlhbFxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUZha2VFdmVudCwgY3JlYXRlS2V5Ym9hcmRFdmVudCwgY3JlYXRlTW91c2VFdmVudCwgY3JlYXRlVG91Y2hFdmVudCB9IGZyb20gJy4vZXZlbnQtY3JlYXRvcnMnO1xuaW1wb3J0IHsgS2V5Ym9hcmRFdmVudE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBVdGlsaXR5IHRvIGRpc3BhdGNoIGFueSBldmVudCBvbiBhIE5vZGUuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudDxFIGV4dGVuZHMgRXZlbnQgPSBFdmVudD4obm9kZTogTm9kZSB8IFdpbmRvdywgZXZlbnQ6IEUpOiBFIHtcbiAgbm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcblxuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIHRvIGRpc3BhdGNoIGEgZmFrZSBldmVudCBvbiBhIHNwZWNpZmllZCBub2RlLlxuICpcbiAqIGRpc3BhdGNoRmFrZUV2ZW50KGVsZW1lbnQsICdtb3VzZWRvd24nKTtcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwYXRjaEZha2VFdmVudChub2RlOiBOb2RlIHwgV2luZG93LCB0eXBlOiBzdHJpbmcsIGNhbkJ1YmJsZT86IGJvb2xlYW4pOiBFdmVudCB7XG4gIHJldHVybiBkaXNwYXRjaEV2ZW50KG5vZGUsIGNyZWF0ZUZha2VFdmVudCh0eXBlLCBjYW5CdWJibGUpKTtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgdG8gZGlzcGF0Y2ggYSBrZXlib2FyZCBldmVudCB3aXRoIGEgc3BlY2lmaWVkIGtleS5cbiAqXG4gKiAgZGlzcGF0Y2hLZXlib2FyZEV2ZW50KGNhbGVuZGFyQm9keUVsLCAna2V5ZG93bicsICdMRUZUX0FSUk9XJyk7XG4gKlxuICogIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoS2V5Ym9hcmRFdmVudChcbiAgbm9kZTogTm9kZSxcbiAgdHlwZTogc3RyaW5nLFxuICBrZXlPcktleUNvZGU6IHN0cmluZyB8IG51bWJlciB8IEtleWJvYXJkRXZlbnRPcHRpb25zLFxuICB0YXJnZXQ/OiBFbGVtZW50LFxuKTogS2V5Ym9hcmRFdmVudCB7XG4gIHJldHVybiBkaXNwYXRjaEV2ZW50KG5vZGUsIGNyZWF0ZUtleWJvYXJkRXZlbnQodHlwZSwga2V5T3JLZXlDb2RlLCB0YXJnZXQpKTtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgdG8gZGlzcGF0Y2ggYSBtb3VzZSBldmVudCBvbiB0aGUgc3BlY2lmaWVkIGNvb3JkaW5hdGVzLlxuICpcbiAqICBkaXNwYXRjaE1vdXNlRXZlbnQocmlwcGxlVGFyZ2V0LCAnbW91c2Vkb3duJywgNTAsIDc1KTtcbiAqICBkaXNwYXRjaE1vdXNlRXZlbnQocmlwcGxlVGFyZ2V0LCAnbW91c2V1cCcpO1xuICpcbiAqICBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwYXRjaE1vdXNlRXZlbnQoXG4gIG5vZGU6IE5vZGUsXG4gIHR5cGU6IHN0cmluZyxcbiAgeDogbnVtYmVyID0gMCxcbiAgeTogbnVtYmVyID0gMCxcbiAgZXZlbnQ6IE1vdXNlRXZlbnQgPSBjcmVhdGVNb3VzZUV2ZW50KHR5cGUsIHgsIHkpLFxuKTogTW91c2VFdmVudCB7XG4gIHJldHVybiBkaXNwYXRjaEV2ZW50KG5vZGUsIGV2ZW50KTtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgdG8gZGlzcGF0Y2ggYSB0b3VjaCBldmVudCBvbiB0aGUgc3BlY2lmaWVkIGNvb3JkaW5hdGVzLlxuICpcbiAqIGRpc3BhdGNoVG91Y2hFdmVudChyaXBwbGVUYXJnZXQsICd0b3VjaHN0YXJ0Jyk7XG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hUb3VjaEV2ZW50KG5vZGU6IEhUTUxFbGVtZW50IHwgV2luZG93IHwgRG9jdW1lbnQsIHR5cGU6IHN0cmluZywgeDogbnVtYmVyID0gMCwgeTogbnVtYmVyID0gMCk6IEV2ZW50IHtcbiAgcmV0dXJuIGRpc3BhdGNoRXZlbnQobm9kZSwgY3JlYXRlVG91Y2hFdmVudCh0eXBlLCB4LCB5KSk7XG59XG4iXX0=