one
Version:
One is a new React Framework that makes Vite serve both native and web.
76 lines (75 loc) • 1.94 kB
JavaScript
import { describe, expect, it, vi } from "vitest";
import { createRouteModuleHmrPlugin } from "./routeModuleHmrPlugin.mjs";
function runHotUpdate({
environment,
file,
modules
}) {
const plugin = createRouteModuleHmrPlugin("app-sootsim");
const send = 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
};
}
describe(createRouteModuleHmrPlugin, () => {
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]
});
expect(result).toEqual([routeModule, otherModule]);
expect(routeModule.acceptedHmrExports).toEqual(/* @__PURE__ */new Set());
expect(otherModule.acceptedHmrExports).toBeUndefined();
expect(send).toHaveBeenCalledWith({
type: "custom",
event: "one:route-update",
data: {
file: "app-sootsim/_layout.tsx"
}
});
});
it("suppresses ssr reloads only inside the configured router root", () => {
const modules = [{
id: "/project/app-sootsim/index.tsx"
}];
expect(runHotUpdate({
environment: "ssr",
file: "/project/app-sootsim/index.tsx",
modules
}).result).toEqual([]);
expect(runHotUpdate({
environment: "ssr",
file: "/project/app/index.tsx",
modules
}).result).toEqual(modules);
});
});
//# sourceMappingURL=routeModuleHmrPlugin.test.mjs.map