react-compose-components
Version:
A utility to flatten component pyramids in React.
74 lines • 2.95 kB
JavaScript
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
t[p[i]] = s[p[i]];
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importDefault(require("react"));
var react_testing_library_1 = require("react-testing-library");
var index_1 = __importDefault(require("./index"));
var Div = function (_a) {
var children = _a.children, rest = __rest(_a, ["children"]);
return react_1.default.createElement("div", __assign({}, rest), children);
};
var Li = function (_a) {
var children = _a.children;
return react_1.default.createElement("li", null, children);
};
it('should compose components and attach props with children', function () {
var container = react_testing_library_1.render((react_1.default.createElement(index_1.default, { components: [
[Div, { className: 'foo' }],
'ul',
Li,
] }, "Bar"))).container;
// Explitly manual testing
var div = container.children[0];
expect(div.tagName).toBe('DIV');
expect(div.className).toBe('foo');
expect(div.children).toHaveLength(1);
var ul = div.children[0];
expect(ul.tagName).toBe('UL');
expect(ul.className).toBe('');
expect(ul.children).toHaveLength(1);
var li = ul.children[0];
expect(li.tagName).toBe('LI');
expect(li.className).toBe('');
expect(li.children).toHaveLength(0);
expect(li.textContent).toBe('Bar');
// Extra safety
expect(div).toMatchSnapshot();
});
it('should compose components without children', function () {
var container = react_testing_library_1.render((react_1.default.createElement(index_1.default, { components: [
['div', { className: 'foo' }],
['i', { className: 'icon-bar' }],
] }))).container;
// Explicitly manual testing
var div = container.children[0];
expect(div.tagName).toBe('DIV');
expect(div.className).toBe('foo');
expect(div.children).toHaveLength(1);
var i = div.children[0];
expect(i.tagName).toBe('I');
expect(i.className).toBe('icon-bar');
expect(i.children).toHaveLength(0);
// Extra safety
expect(div).toMatchSnapshot();
});
//# sourceMappingURL=index.test.js.map
;