45 lines
2.5 KiB
JavaScript
45 lines
2.5 KiB
JavaScript
import * as React from 'react';
|
|
import * as renderer from 'react-test-renderer';
|
|
import { composeRenderFunction } from './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 = 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 = composeRenderFunction(renderDecoratorA, 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 = 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 = 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 = composeRenderFunction(renderDecoratorA, renderDecoratorB);
|
|
expect(composeRenderFunction(renderDecoratorA, renderDecoratorB)).toBe(renderDecoratorAAroundB);
|
|
});
|
|
});
|
|
//# sourceMappingURL=composeRenderFunction.test.js.map
|