mirror of
https://github.com/google/blockly.git
synced 2026-01-25 17:50:10 +01:00
* fix: move core test helpers into new directory * fix: add test helpers to core and convert to goog modules * fix: change tests to use local helpers * fix: change local tests to use chai asserts * fix: skip field tests in serializer b/c test blocks are unavailable * fix: rename some helper files * fix: rename some helper modules * fix: split block helpers into code gen and serialization * fix: split block defs into new helper file * fix: split warning helpers into new file * fix: split user input helpers into new file * fix: split event helpers into a new file * fix: split variable helper into new file * fix: move remaining test helpers to new setup-teardown file * fix: rename setup and teardown module * fix: cleanup from rebase * fix: undo accidental rename * fix: lint? * fix: bad toolbox definitions namespace * fix: fixup warning helpers * fix: remove inclusion of dev-tools in mocha tests * move to modules, but break mocha * fix: run mocha as a module * fix: lint
66 lines
2.0 KiB
JavaScript
66 lines
2.0 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
goog.declareModuleId('Blockly.test.helpers.userInput');
|
|
|
|
const {KeyCodes} = goog.require('Blockly.utils.KeyCodes');
|
|
|
|
|
|
/**
|
|
* Triggers pointer event on target.
|
|
* @param {!EventTarget} target The object receiving the event.
|
|
* @param {string} type The type of mouse event (eg: mousedown, mouseup,
|
|
* click).
|
|
* @param {Object<string, string>=} properties Properties to pass into event
|
|
* constructor.
|
|
*/
|
|
export function dispatchPointerEvent(target, type, properties) {
|
|
const eventInitDict = {
|
|
cancelable: true,
|
|
bubbles: true,
|
|
isPrimary: true,
|
|
pressure: 0.5,
|
|
clientX: 10,
|
|
clientY: 10,
|
|
};
|
|
if (properties) {
|
|
Object.assign(eventInitDict, properties);
|
|
}
|
|
const event = new PointerEvent(type, eventInitDict);
|
|
target.dispatchEvent(event);
|
|
}
|
|
|
|
/**
|
|
* Creates a key down event used for testing.
|
|
* @param {number} keyCode The keycode for the event. Use Blockly.utils.KeyCodes enum.
|
|
* @param {!Array<number>=} modifiers A list of modifiers. Use Blockly.utils.KeyCodes enum.
|
|
* @return {!KeyboardEvent} The mocked keydown event.
|
|
*/
|
|
export function createKeyDownEvent(keyCode, modifiers) {
|
|
const event = {
|
|
keyCode: keyCode,
|
|
};
|
|
if (modifiers && modifiers.length > 0) {
|
|
event.altKey = modifiers.indexOf(KeyCodes.ALT) > -1;
|
|
event.ctrlKey = modifiers.indexOf(KeyCodes.CTRL) > -1;
|
|
event.metaKey = modifiers.indexOf(KeyCodes.META) > -1;
|
|
event.shiftKey = modifiers.indexOf(KeyCodes.SHIFT) > -1;
|
|
}
|
|
return new KeyboardEvent('keydown', event);
|
|
}
|
|
|
|
/**
|
|
* Simulates mouse click by triggering relevant mouse events.
|
|
* @param {!EventTarget} target The object receiving the event.
|
|
* @param {Object<string, string>=} properties Properties to pass into event
|
|
* constructor.
|
|
*/
|
|
export function simulateClick(target, properties) {
|
|
dispatchPointerEvent(target, 'pointerdown', properties);
|
|
dispatchPointerEvent(target, 'pointerup', properties);
|
|
dispatchPointerEvent(target, 'click', properties);
|
|
}
|