import { __assign, __rest } from "tslib"; import * as React from 'react'; import * as renderer from 'react-test-renderer'; import { composeComponentAs } from './composeComponentAs'; var Base = function (props) { return React.createElement("div", { "data-value": props.value }); }; var DecoratorA = function (props) { var DefaultRender = props.defaultRender, exampleProps = __rest(props, ["defaultRender"]); return React.createElement("div", { "data-a": "a" }, DefaultRender ? React.createElement(DefaultRender, __assign({}, exampleProps)) : null); }; var DecoratorB = function (props) { var DefaultRender = props.defaultRender, exampleProps = __rest(props, ["defaultRender"]); return React.createElement("div", { "data-b": "b" }, DefaultRender ? React.createElement(DefaultRender, __assign({}, exampleProps)) : null); }; describe('composeComponentAs', function () { it('passes Base to DecoratorA', function () { var DecoratorAWithBase = composeComponentAs(DecoratorA, Base); var component = renderer.create(React.createElement(DecoratorAWithBase, { value: "test" })); expect(component.toJSON()).toMatchSnapshot(); }); it('passes Base to DecoratorB through DecoratorA', function () { var DecoratorAAndBWithBase = composeComponentAs(DecoratorA, composeComponentAs(DecoratorB, Base)); var component = renderer.create(React.createElement(DecoratorAAndBWithBase, { value: "test" })); expect(component.toJSON()).toMatchSnapshot(); }); it('passes Base as defaultRender to DecoratorB through DecoratorA', function () { var DecoratorAAroundB = composeComponentAs(DecoratorA, DecoratorB); var component = renderer.create(React.createElement(DecoratorAAroundB, { value: "test", defaultRender: Base })); expect(component.toJSON()).toMatchSnapshot(); }); it('renders without defaultRender', function () { var DecoratorAAroundB = composeComponentAs(DecoratorA, DecoratorB); var component = renderer.create(React.createElement(DecoratorAAroundB, { value: "test" })); expect(component.toJSON()).toMatchSnapshot(); }); it('avoids recomposing already-composed components', function () { var DecoratorAAroundB = composeComponentAs(DecoratorA, DecoratorB); expect(composeComponentAs(DecoratorA, DecoratorB)).toBe(DecoratorAAroundB); }); }); //# sourceMappingURL=composeComponentAs.test.js.map