UNPKG

react-compose-components

Version:

A utility to flatten component pyramids in React.

74 lines 2.95 kB
"use strict"; 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