react-component-override
Version:
Library for overriding react components at runtime.
36 lines (35 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("@testing-library/react");
const _1 = require("./");
const TestComponent = (0, _1.overridable)(() => {
return (0, jsx_runtime_1.jsx)("span", { children: "Test component" });
});
const OverridenComponent = () => {
return (0, jsx_runtime_1.jsx)("span", { children: "Overriden component" });
};
describe('Given overrides are not provided', () => {
it('should render original component', () => {
const { queryByText } = (0, react_1.render)((0, jsx_runtime_1.jsx)(TestComponent, {}));
expect(queryByText('Test component')).toBeTruthy();
});
});
describe('Given overrides are provided', () => {
it('should render overriden component', () => {
const overrides = (0, _1.createOverrides)([
(0, _1.override)(TestComponent, OverridenComponent)
]);
const { queryByText } = (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.OverridesProvider, Object.assign({ overrides: overrides }, { children: (0, jsx_runtime_1.jsx)(TestComponent, {}) })));
expect(queryByText('Overriden component')).toBeTruthy();
expect(queryByText('Test component')).not.toBeTruthy();
});
it('should resolve original component when override is using it', () => {
const overrides = (0, _1.createOverrides)([
(0, _1.override)(TestComponent, props => (0, jsx_runtime_1.jsx)(TestComponent, Object.assign({}, props)))
]);
const { queryByText } = (0, react_1.render)((0, jsx_runtime_1.jsxs)(_1.OverridesProvider, Object.assign({ overrides: overrides }, { children: [(0, jsx_runtime_1.jsx)("span", { children: "Overriden component" }), (0, jsx_runtime_1.jsx)(TestComponent, {})] })));
expect(queryByText('Test component')).toBeTruthy();
expect(queryByText('Overriden component')).toBeTruthy();
});
});