@helpscout/cyan
Version:
Cypress-like Testing for React + JSDOM
56 lines (42 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "keyCode", {
enumerable: true,
get: function get() {
return _keycode.default;
}
});
exports.typeCommand = exports.simulateKeyEvent = void 0;
var _keycode = _interopRequireDefault(require("keycode"));
var _fireEvent = _interopRequireDefault(require("../fireEvent"));
var _timers = require("../timers");
var _is = require("./is.utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var simulateKeyEvent = function (keyEvent, command, node) {
if (!(0, _is.isString)(command)) return;
var commands = command.split(/{(.*?)}/);
/* istanbul ignore next */
var targetNode = node || document;
commands.filter(function (cmd) {
return cmd;
}).forEach(function (command) {
var keyCodeValue = (0, _keycode.default)(command);
if ((0, _is.isDefined)(keyCodeValue)) {
_fireEvent.default[keyEvent](targetNode, {
keyCode: keyCodeValue
});
(0, _timers.runAllTimers)();
}
});
};
exports.simulateKeyEvent = simulateKeyEvent;
var typeCommand = function (command, node) {
if (node === void 0) {
node = document;
}
simulateKeyEvent('keyDown', command, node);
simulateKeyEvent('keyUp', command, node);
};
exports.typeCommand = typeCommand;