reshow-unit
Version:
Reshow Unit Test Pack
182 lines (172 loc) • 6.11 kB
JavaScript
;
var _interopRequireWildcard = require("reshow-runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("reshow-runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.simulateEvent = exports.screen = exports.render = exports.getRoleHtml = exports.cleanIt = exports.act = void 0;
var _objectSpread2 = _interopRequireDefault(require("reshow-runtime/helpers/objectSpread2"));
var _regeneratorRuntime2 = _interopRequireDefault(require("reshow-runtime/helpers/regeneratorRuntime"));
var _asyncToGenerator2 = _interopRequireDefault(require("reshow-runtime/helpers/asyncToGenerator"));
var _react = _interopRequireWildcard(require("react"));
var React = _react;
var _reshowUnitDom = require("reshow-unit-dom");
exports.jsdom = _reshowUnitDom.jsdom;
exports.hideConsoleError = _reshowUnitDom.hideConsoleError;
exports.getSinon = _reshowUnitDom.getSinon;
exports.sleep = _reshowUnitDom.sleep;
var _winDoc = require("win-doc");
var _getRandomId = require("get-random-id");
var _getObjectValue = require("get-object-value");
var _dom = require("@testing-library/dom");
exports.waitFor = _dom.waitFor;
exports.waitForElementToBeRemoved = _dom.waitForElementToBeRemoved;
var _react2 = require("@testing-library/react");
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
var _process = require("process");
var _reshowBuild = _interopRequireDefault(require("reshow-build"));
//@ts-check
var envStrictMode = /** @type string*/_process.env.STRICT_MODE;
var STRICT_MODE = -1 !== "|true|false|null|0|".indexOf(envStrictMode) ? JSON.parse(envStrictMode) : envStrictMode;
if (STRICT_MODE) {
console.log("STRICT_MODE: on");
}
/**
* Fix!!
* `The current testing environment is not configured to support act(…)`
*
* @see https://github.com/testing-library/react-testing-library/issues/1025
* @see https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
*/
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
// https://testing-library.com/docs/queries/about/#screen
var screen = exports.screen = function screen() {
var _doc;
return (0, _react2.getQueriesForElement)((_doc = (0, _winDoc.doc)()) === null || _doc === void 0 ? void 0 : _doc.body, _react2.queries);
};
/**
* @param {string} role
* @returns {string}
*/
var getRoleHtml = exports.getRoleHtml = function getRoleHtml(role) {
return screen().getByRole(role).outerHTML;
};
/**
* @param {Object} [props]
*/
var cleanIt = exports.cleanIt = function cleanIt(props) {
var _ref = props || {},
withoutJsdom = _ref.withoutJsdom;
if (!withoutJsdom) {
(0, _reshowUnitDom.cleanIt)(props);
}
(0, _react2.cleanup)();
};
/**
* @param {function} cb
*/
var act = exports.act = /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee(cb, milliseconds, debug) {
var start, timer;
return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (cb === void 0) {
cb = function cb() {};
}
if (milliseconds === void 0) {
milliseconds = 1;
}
if (debug === void 0) {
debug = false;
}
start = (0, _getRandomId.getTimestamp)();
_context.next = 6;
return (0, _react.act)(function () {
return new Promise(function (resolve) {
cb();
/**
* @param {function} resolve
*/
var _wait = function wait(resolve) {
var now = (0, _getRandomId.getTimestamp)();
debug && console.log({
during: now - start,
debug: debug,
start: start,
now: now
});
if (milliseconds + start > now) {
clearTimeout(timer);
timer = setTimeout(function () {
return _wait(resolve);
}, 1);
} else {
resolve();
}
};
_wait(resolve);
});
});
case 6:
case "end":
return _context.stop();
}
}, _callee);
}));
return function act(_x, _x2, _x3) {
return _ref2.apply(this, arguments);
};
}();
/**
* @typedef {Object} RenderResult
* @property {function} html
* @property {function} instance
*/
/**
* rtl-render: https://github.com/testing-library/react-testing-library/blob/main/src/pure.js
*
* @param {React.ReactElement} OrigDom
* @param {object} options
* @returns {import("@testing-library/react").RenderResult & RenderResult}
*/
var render = exports.render = function render(OrigDom, options) {
var _options;
if (options === void 0) {
options = {};
}
var instance = (_options = options) === null || _options === void 0 ? void 0 : _options.instance;
var Dom = OrigDom;
var uInstance;
if (instance) {
if (true === instance) {
/**
* @param {React.ReactElement} el
*/
instance = function instance(el) {
return uInstance = el;
};
}
Dom = /** @type React.ReactElement*/(0, _reshowBuild["default"])(OrigDom)({
ref: instance
});
}
if (STRICT_MODE) {
Dom = /** @type React.ReactElement*/(0, _reshowBuild["default"])(_react.StrictMode)(undefined, Dom);
}
var result = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _react2.render)(Dom, options)), {}, {
html: function html() {
return result.container.innerHTML;
},
instance: function instance() {
return uInstance;
}
});
return result;
};
// https://testing-library.com/docs/user-event/intro
/**
* @param {ConstructorParameters<any>} p
*/
var simulateEvent = exports.simulateEvent = function simulateEvent() {
var _getDefault;
return (_getDefault = (0, _getObjectValue.getDefault)(_userEvent["default"])).setup.apply(_getDefault, arguments);
};