wix-style-react
Version:
wix-style-react
75 lines (63 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createRendererWithUniDriver = exports.createRendererWithDriver = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _reactTestingLibrary = require('react-testing-library');
Object.keys(_reactTestingLibrary).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _reactTestingLibrary[key];
}
});
});
var _testUtils = require('react-dom/test-utils');
var _unidriver = require('unidriver');
var getElement = function getElement(_ref) {
var rendered = _ref.rendered,
dataHook = _ref.dataHook;
return dataHook ? rendered.container.querySelector('[data-hook="' + dataHook + '"]') : rendered.container.firstChild;
};
/**
* Creates a `render` function that returns the same object as `react-testing-library`'s render, but
* with and extra `driver` property.
*
* The returned render function arguments:
* @param [React.Element] jsx a jsx element to render
* @param [string] dataHook if provided then the driver would be created with the element which is found by the dataHook. If not provided then it assumes that the rendered root element is the component's root element and it will be used for the driver.
*/
var createRendererWithDriver = exports.createRendererWithDriver = function createRendererWithDriver(driverFactory) {
return function (jsx, dataHook) {
var rendered = (0, _reactTestingLibrary.render)(jsx);
var element = getElement({ rendered: rendered, dataHook: dataHook });
var driver = driverFactory({
element: element,
wrapper: rendered.container,
eventTrigger: _testUtils.Simulate
});
return _extends({}, rendered, {
driver: driver
});
};
};
/**
* Creates a `render` function that returns the same object as `react-testing-library`'s render, but
* with and extra `driver` property which is a Unidriver.
*
* The returned render function arguments:
* @param [React.Element] jsx a jsx element to render
* @param [string] dataHook if provided then the driver would be created with the element which is found by the dataHook. If not provided then it assumes that the rendered root element is the component's root element and it will be used for the driver.
*/
var createRendererWithUniDriver = exports.createRendererWithUniDriver = function createRendererWithUniDriver(driverFactory) {
return function (jsx, dataHook) {
var rendered = (0, _reactTestingLibrary.render)(jsx);
var element = getElement({ rendered: rendered, dataHook: dataHook });
var driver = driverFactory((0, _unidriver.reactUniDriver)(element));
return _extends({}, rendered, {
driver: driver
});
};
};