wix-style-react
Version:
wix-style-react
58 lines (50 loc) • 2.5 kB
JavaScript
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; };
import { render } from 'react-testing-library';
import { Simulate } from 'react-dom/test-utils';
import { reactUniDriver } from '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.
*/
export var createRendererWithDriver = function createRendererWithDriver(driverFactory) {
return function (jsx, dataHook) {
var rendered = render(jsx);
var element = getElement({ rendered: rendered, dataHook: dataHook });
var driver = driverFactory({
element: element,
wrapper: rendered.container,
eventTrigger: 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.
*/
export var createRendererWithUniDriver = function createRendererWithUniDriver(driverFactory) {
return function (jsx, dataHook) {
var rendered = render(jsx);
var element = getElement({ rendered: rendered, dataHook: dataHook });
var driver = driverFactory(reactUniDriver(element));
return _extends({}, rendered, {
driver: driver
});
};
};
export * from 'react-testing-library';