reshow-build
Version:
React super cloneElement and createElement
138 lines • 4.76 kB
JavaScript
import _toConsumableArray from "reshow-runtime/es/helpers/toConsumableArray";
var _div, _div2, _div3, _div4, _div5, _div6, _div7, _div8, _div9, _div10, _div11, _div12, _i, _span, _span2, _span3;
// @ts-check
import * as React from "react";
var {
Children
} = React;
import { expect } from "chai";
import { render } from "reshow-unit";
import build from "../index.mjs";
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
describe("Test build array", function () {
it("test build aray without props", function () {
var arr = [_div || (_div = /*#__PURE__*/_jsx("div", {})), _div2 || (_div2 = /*#__PURE__*/_jsx("div", {}))];
var wrap = render(build(arr)());
expect(wrap.html()).to.equal("<div></div><div></div>");
});
it("test with multi children", function () {
var FakeDom = function FakeDom(_ref) {
var {
children
} = _ref;
return /*#__PURE__*/_jsx("div", {
children: build(children)({
title: "foo"
})
});
};
var vDom = /*#__PURE__*/_jsxs(FakeDom, {
children: [null, _div3 || (_div3 = /*#__PURE__*/_jsx("div", {
children: "1"
})), _div4 || (_div4 = /*#__PURE__*/_jsx("div", {
children: "2"
}))]
});
var wrap = render(vDom);
expect(wrap.html()).to.equal('<div><div title="foo">1</div><div title="foo">2</div></div>');
});
it("test with multi function", function () {
var FakeDom = function FakeDom(_ref2) {
var {
children
} = _ref2;
expect(Children.count(children)).to.equal(2);
return /*#__PURE__*/_jsx("div", {
children: build(children)({
foo: _div5 || (_div5 = /*#__PURE__*/_jsx("div", {
children: "foo"
})),
bar: _div6 || (_div6 = /*#__PURE__*/_jsx("div", {
children: "bar"
}))
})
});
};
var vDom = /*#__PURE__*/_jsxs(FakeDom, {
children: [function (_ref3) {
var {
foo
} = _ref3;
return foo;
}, _div7 || (_div7 = /*#__PURE__*/_jsx("div", {})), _div8 || (_div8 = /*#__PURE__*/_jsx("div", {})), function (_ref4) {
var {
bar
} = _ref4;
return bar;
}]
});
var wrap = render(vDom);
expect(wrap.html()).to.equal('<div><div>foo</div><div foo="[object Object]" bar="[object Object]"></div><div foo="[object Object]" bar="[object Object]"></div><div>bar</div></div>');
});
it("test with multi Component instance", function () {
var FakeDom = function FakeDom(_ref5) {
var {
children
} = _ref5;
expect(Children.count(children)).to.equal(2);
return /*#__PURE__*/_jsx("div", {
children: build(children)({
foo: _div9 || (_div9 = /*#__PURE__*/_jsx("div", {
children: "foo"
})),
bar: _div10 || (_div10 = /*#__PURE__*/_jsx("div", {
children: "bar"
}))
})
});
};
var A = function A(_ref6) {
var {
foo
} = _ref6;
return foo;
};
var B = function B(_ref7) {
var {
bar
} = _ref7;
return bar;
};
var vDom = /*#__PURE__*/_jsxs(FakeDom, {
children: [A, _div11 || (_div11 = /*#__PURE__*/_jsx("div", {})), _div12 || (_div12 = /*#__PURE__*/_jsx("div", {})), B]
});
var wrap = render(vDom);
expect(wrap.html()).to.equal('<div><div>foo</div><div foo="[object Object]" bar="[object Object]"></div><div foo="[object Object]" bar="[object Object]"></div><div>bar</div></div>');
});
it("test with sub array", function () {
/**
* @param {{children?:any}} props
*/
var FakeDom = function FakeDom(_ref8) {
var {
children
} = _ref8;
var arr = [_i || (_i = /*#__PURE__*/_jsx("i", {}))].concat(_toConsumableArray(Children.map(children, function (c) {
return c;
}) || []));
return /*#__PURE__*/_jsx("div", {
children: build(arr)({
"data-foo": "bar"
})
});
};
var vDom = /*#__PURE__*/_jsxs(FakeDom, {
children: [_span || (_span = /*#__PURE__*/_jsx("span", {})), _span2 || (_span2 = /*#__PURE__*/_jsx("span", {}))]
});
var wrap = render(vDom);
expect(wrap.html()).to.equal('<div><i data-foo="bar"></i><span data-foo="bar"></span><span data-foo="bar"></span></div>');
var vDom2 = /*#__PURE__*/_jsx(FakeDom, {
children: _span3 || (_span3 = /*#__PURE__*/_jsx("span", {}))
});
var wrap2 = render(vDom2);
expect(wrap2.html()).to.equal('<div><i data-foo="bar"></i><span data-foo="bar"></span></div>');
var vDom3 = /*#__PURE__*/_jsx(FakeDom, {});
var wrap3 = render(vDom3);
expect(wrap3.html()).to.equal('<div><i data-foo="bar"></i></div>');
});
});