You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.6 KiB

"use strict"; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _react = require('@testing-library/react');
var _runtime = require('@umijs/runtime');
var _react3 = require('react'); var _react4 = _interopRequireDefault(_react3);
var _testutils = require('react-dom/test-utils');
var _renderClient = require('./renderClient');
let container;
beforeEach(() => {
container = document.createElement("div");
container.id = "app";
document.body.appendChild(container);
});
afterEach(() => {
document.body.removeChild(container);
container = null;
_react.cleanup.call(void 0, );
});
test("normal", () => {
const plugin = new (0, _runtime.Plugin)({
validKeys: ["rootContainer"]
});
plugin.register({
apply: {
rootContainer(container3, args) {
if (!(args.plugin && args.routes)) {
throw new Error("history, plugin or routes not exists in the args of rootContainer");
}
return /* @__PURE__ */ _react4.default.createElement("div", null, /* @__PURE__ */ _react4.default.createElement("h1", null, "root container"), container3);
}
},
path: "/foo"
});
const routes = [
{path: "/foo", component: () => /* @__PURE__ */ _react4.default.createElement("h1", null, "foo")},
{path: "/bar", component: () => /* @__PURE__ */ _react4.default.createElement("h1", null, "bar")}
];
const {container: container1} = _react.render.call(void 0, _renderClient.renderClient.call(void 0, {
plugin,
routes,
path: "/foo"
}));
expect(container1.innerHTML).toEqual("<div><h1>root container</h1><h1>foo</h1></div>");
window.g_path = "/bar";
const {container: container2} = _react.render.call(void 0, _renderClient.renderClient.call(void 0, {
plugin,
routes
}));
expect(container2.innerHTML).toEqual("<div><h1>root container</h1><h1>bar</h1></div>");
expect(() => {
_renderClient.renderClient.call(void 0, {
plugin,
routes,
path: "/haha"
});
}).toThrow(/Render failed, route of path \/haha not found\./);
let loading = true;
_testutils.act.call(void 0, () => {
_renderClient.renderClient.call(void 0, {
plugin,
routes,
rootElement: "app",
callback: () => {
loading = false;
}
});
});
expect(loading).toBeFalsy();
});
test("do not support child routes", () => {
const plugin = new (0, _runtime.Plugin)({
validKeys: []
});
expect(() => {
_renderClient.renderClient.call(void 0, {
routes: [{path: "/", routes: []}],
plugin
});
}).toThrow(/Render failed, child routes is not supported in mpa renderer\./);
});