42 lines
2.4 KiB
JavaScript
42 lines
2.4 KiB
JavaScript
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
|