UNPKG

@ngneat/spectator

Version:

A powerful tool to simplify your Angular tests

55 lines 5.6 kB
/** * 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=