reshow-build
Version:
React super cloneElement and createElement
184 lines • 6.43 kB
JavaScript
import _objectWithoutProperties from "reshow-runtime/es/helpers/objectWithoutProperties";
import _objectSpread from "reshow-runtime/es/helpers/objectSpread2";
import _classCallCheck from "reshow-runtime/es/helpers/classCallCheck";
import _createClass from "reshow-runtime/es/helpers/createClass";
import _possibleConstructorReturn from "reshow-runtime/es/helpers/possibleConstructorReturn";
import _isNativeReflectConstruct from "reshow-runtime/es/helpers/isNativeReflectConstruct";
import _getPrototypeOf from "reshow-runtime/es/helpers/getPrototypeOf";
import _inherits from "reshow-runtime/es/helpers/inherits";
var _excluded = ["comp"];
var _div, _div2, _div3;
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
// @ts-check
import * as React from "react";
var {
PureComponent
} = React;
import { expect } from "chai";
import { render } from "reshow-unit";
import build from "../index.mjs";
import { jsx as _jsx } from "react/jsx-runtime";
describe("Test build render", function () {
it("test build native html", function () {
var vdom = /**@type React.ReactElement*/build("a")();
var actual = render(vdom).html();
expect(actual).to.equal("<a></a>");
});
it("test function return another component", function () {
var FakeComponent = /*#__PURE__*/function (_PureComponent) {
function FakeComponent() {
_classCallCheck(this, FakeComponent);
return _callSuper(this, FakeComponent, arguments);
}
_inherits(FakeComponent, _PureComponent);
return _createClass(FakeComponent, [{
key: "render",
value: function render() {
return /*#__PURE__*/_jsx("div", {
children: this.props.foo
});
}
}]);
}(PureComponent);
var func = function func(/**@type any*/props) {
return /*#__PURE__*/_jsx(FakeComponent, _objectSpread({}, props));
};
var vDom = /**@type React.ReactElement*/build(func)({
foo: "bar3"
});
var html = render(vDom).html();
expect(html).to.equal("<div>bar3</div>");
});
it("test with anonymous func and child", function () {
var child = [_div || (_div = /*#__PURE__*/_jsx("div", {
id: "1"
}, "0")), _div2 || (_div2 = /*#__PURE__*/_jsx("div", {
id: "2"
}, "1"))];
var buildDom = build(function (/** @type any*/_ref) {
var {
children
} = _ref;
return /*#__PURE__*/_jsx("div", {
id: "root",
children: children
});
})({}, child);
var html = render(/*#__PURE__*/_jsx("div", {
children: buildDom
})).html();
var stateFunc = function stateFunc(_ref2) {
var {
children
} = _ref2;
return /*#__PURE__*/_jsx("div", {
id: "root",
children: children
});
};
var stateFuncBuildDom = build(stateFunc)({}, child);
var stateFuncHtml = render(/*#__PURE__*/_jsx("div", {
children: stateFuncBuildDom
})).html();
var expected = '<div><div id="root"><div id="1"></div><div id="2"></div></div></div>';
expect(html).to.equal(expected);
expect(stateFuncHtml).to.equal(expected);
});
it("test with component", function () {
var FakeComponent = function FakeComponent(/** @type any*/props) {
return /*#__PURE__*/_jsx("div", {
children: props.foo
});
};
var vDom = /**@type React.ReactElement*/
build(FakeComponent)({
foo: "bar"
});
var html = render(vDom).html();
expect(html).to.equal("<div>bar</div>");
});
it("test with instance", function () {
var FakeComponent = function FakeComponent(/** @type any*/props) {
return /*#__PURE__*/_jsx("div", {
children: props.foo
});
};
var vDom = /**@type React.ReactElement*/
build(/*#__PURE__*/_jsx(FakeComponent, {}))({
foo: "bar1"
});
var html = render(vDom).html();
expect(html).to.equal("<div>bar1</div>");
});
it("test with class component", function () {
var FakeComponent = /*#__PURE__*/function (_PureComponent2) {
function FakeComponent() {
_classCallCheck(this, FakeComponent);
return _callSuper(this, FakeComponent, arguments);
}
_inherits(FakeComponent, _PureComponent2);
return _createClass(FakeComponent, [{
key: "render",
value: function render() {
return /*#__PURE__*/_jsx("div", {
children: this.props.foo
});
}
}]);
}(PureComponent);
var vDom = /**@type React.ReactElement*/
build(FakeComponent)({
foo: "bar2"
});
var html = render(vDom).html();
expect(html).to.equal("<div>bar2</div>");
});
it("test with clone and child", function () {
var FakeComponent = /*#__PURE__*/function (_PureComponent3) {
function FakeComponent() {
_classCallCheck(this, FakeComponent);
return _callSuper(this, FakeComponent, arguments);
}
_inherits(FakeComponent, _PureComponent3);
return _createClass(FakeComponent, [{
key: "render",
value: function render() {
var _this$props = this.props,
{
comp
} = _this$props,
others = _objectWithoutProperties(_this$props, _excluded);
return build(comp)(others, "bar");
}
}]);
}(PureComponent);
var html = render(/*#__PURE__*/_jsx(FakeComponent, {
id: "foo",
comp: _div3 || (_div3 = /*#__PURE__*/_jsx("div", {
children: "foo"
}))
})).html();
expect(html).to.equal('<div id="foo">bar</div>');
});
it("test with class and child", function () {
var FakeComponent = /*#__PURE__*/function (_PureComponent4) {
function FakeComponent() {
_classCallCheck(this, FakeComponent);
return _callSuper(this, FakeComponent, arguments);
}
_inherits(FakeComponent, _PureComponent4);
return _createClass(FakeComponent, [{
key: "render",
value: function render() {
return /*#__PURE__*/_jsx("div", _objectSpread({}, this.props));
}
}]);
}(PureComponent);
var vDom = /**@type React.ReactElement*/
build(FakeComponent)({
id: "foo"
}, "hello");
var html = render(vDom).html();
expect(html).to.equal('<div id="foo">hello</div>');
});
});