one
Version:
One is a new React Framework that makes Vite serve both native and web.
74 lines • 2.12 kB
JavaScript
var import_vitest = require("vitest");
var import_routeModuleHmrPlugin = require("./routeModuleHmrPlugin.cjs");
function runHotUpdate({
environment,
file,
modules
}) {
const plugin = (0, import_routeModuleHmrPlugin.createRouteModuleHmrPlugin)("app-sootsim");
const send = import_vitest.vi.fn();
const hotUpdate = typeof plugin.hotUpdate === "object" ? plugin.hotUpdate.handler : plugin.hotUpdate;
const result = hotUpdate.call({
environment: {
name: environment
}
}, {
file,
modules,
server: {
config: {
root: "/project"
},
hot: {
send
}
}
});
return {
result,
send
};
}
(0, import_vitest.describe)(import_routeModuleHmrPlugin.createRouteModuleHmrPlugin, () => {
(0, import_vitest.it)("applies client hmr to the configured router root", () => {
const routeModule = {
id: "/project/app-sootsim/_layout.tsx?one"
};
const otherModule = {
id: "/project/app/index.tsx"
};
const {
result,
send
} = runHotUpdate({
environment: "client",
file: "/project/app-sootsim/_layout.tsx",
modules: [routeModule, otherModule]
});
(0, import_vitest.expect)(result).toEqual([routeModule, otherModule]);
(0, import_vitest.expect)(routeModule.acceptedHmrExports).toEqual(/* @__PURE__ */new Set());
(0, import_vitest.expect)(otherModule.acceptedHmrExports).toBeUndefined();
(0, import_vitest.expect)(send).toHaveBeenCalledWith({
type: "custom",
event: "one:route-update",
data: {
file: "app-sootsim/_layout.tsx"
}
});
});
(0, import_vitest.it)("suppresses ssr reloads only inside the configured router root", () => {
const modules = [{
id: "/project/app-sootsim/index.tsx"
}];
(0, import_vitest.expect)(runHotUpdate({
environment: "ssr",
file: "/project/app-sootsim/index.tsx",
modules
}).result).toEqual([]);
(0, import_vitest.expect)(runHotUpdate({
environment: "ssr",
file: "/project/app/index.tsx",
modules
}).result).toEqual(modules);
});
});