"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var renderer = require("react-test-renderer"); var composeRenderFunction_1 = require("./composeRenderFunction"); var renderBase = function (props) { return React.createElement("div", { "data-value": props.value }); }; var renderDecoratorA = function (props, defaultRender) { if (!props) { return null; } return React.createElement("div", { "data-a": "a" }, defaultRender ? defaultRender(props) : null); }; var renderDecoratorB = function (props, defaultRender) { if (!props) { return null; } return React.createElement("div", { "data-b": "b" }, defaultRender ? defaultRender(props) : null); }; describe('composeComponentAs', function () { it('passes Base to DecoratorA', function () { var renderDecoratorAWithBase = (0, composeRenderFunction_1.composeRenderFunction)(renderDecoratorA, renderBase); var component = renderer.create(React.createElement(React.Fragment, null, renderDecoratorAWithBase({ value: 'test' }))); expect(component.toJSON()).toMatchSnapshot(); }); it('passes Base to DecoratorB through DecoratorA', function () { var renderDecoratorAAndBWithBase = (0, composeRenderFunction_1.composeRenderFunction)(renderDecoratorA, (0, composeRenderFunction_1.composeRenderFunction)(renderDecoratorB, renderBase)); var component = renderer.create(React.createElement(React.Fragment, null, renderDecoratorAAndBWithBase({ value: 'test' }))); expect(component.toJSON()).toMatchSnapshot(); }); it('passes Base as defaultRender to DecoratorB through DecoratorA', function () { var renderDecoratorAAroundB = (0, composeRenderFunction_1.composeRenderFunction)(renderDecoratorA, renderDecoratorB); var component = renderer.create(React.createElement(React.Fragment, null, renderDecoratorAAroundB({ value: 'test' }, renderBase))); expect(component.toJSON()).toMatchSnapshot(); }); it('renders without defaultRender', function () { var renderDecoratorAAroundB = (0, composeRenderFunction_1.composeRenderFunction)(renderDecoratorA, renderDecoratorB); var component = renderer.create(React.createElement(React.Fragment, null, renderDecoratorAAroundB({ value: 'test' }))); expect(component.toJSON()).toMatchSnapshot(); }); it('avoids recomposing already-composed components', function () { var renderDecoratorAAroundB = (0, composeRenderFunction_1.composeRenderFunction)(renderDecoratorA, renderDecoratorB); expect((0, composeRenderFunction_1.composeRenderFunction)(renderDecoratorA, renderDecoratorB)).toBe(renderDecoratorAAroundB); }); }); //# sourceMappingURL=composeRenderFunction.test.js.map