component-test-setup
Version:
Standardized test setup methods for React components in tests.
36 lines (35 loc) • 1.38 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupEnzyme = void 0;
const react_1 = __importDefault(require("react"));
/**
* Creates a `renderWrapper` function that can be used in unit tests to mount a component.
*
* @param Component - React component to be rendered.
* @param baseProps - Any default props to pass to the component in all tests.
* @example
* ```tsx
* const renderWrapper = setupEnzyme(ButtonWithText, { onClick: jest.fn() })
*
* const text = 'Hooray!';
* const { props: { onClick }, wrapper } = renderWrapper({ text });
*
* wrapper.find('button').simulate('click');
*
* expect(onClick).toHaveBeenCalledWith(text);
* ```
*/
function setupEnzyme(Component, baseProps) {
const { mount } = require("enzyme");
return function renderWrapper(testProps) {
const props = Object.assign(Object.assign({}, baseProps), testProps);
const wrapper = mount(react_1.default.createElement(Component, Object.assign({}, props)));
// setProps demands _something_ be passed, so we keep that going, too
const update = (updatedProps) => wrapper.setProps(updatedProps);
return { props, wrapper, update };
};
}
exports.setupEnzyme = setupEnzyme;