one
Version:
One is a new React Framework that makes Vite serve both native and web.
78 lines (77 loc) • 4.94 kB
JavaScript
var import_vitest = require("vitest"), import_virtualEntryPlugin = require("./virtualEntryPlugin");
import_vitest.vi.mock("vxrn", () => ({
isNativeEnvironment: (env) => env?.name === "ios" || env?.name === "android"
}));
import_vitest.vi.mock("@vxrn/compiler", () => ({
configuration: { enableNativewind: !1 }
}));
function loadEntry(plugin, envName, command = "build") {
plugin.configResolved?.({ root: "", command });
const ctx = {
environment: { name: envName }
};
return plugin.load.call(ctx, "\0virtual:one-entry");
}
(0, import_vitest.describe)("virtualEntryPlugin", () => {
(0, import_vitest.describe)("setupFile", () => {
const base = {
root: "app",
flags: {}
};
(0, import_vitest.it)("server (ssr) uses lazy dynamic import, not static import", () => {
const plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({
...base,
setupFile: {
client: "./src/setupClient.ts",
server: "./src/setupServer.ts"
}
}), code = loadEntry(plugin, "ssr");
(0, import_vitest.expect)(code).not.toContain('import "./src/setupServer.ts"'), (0, import_vitest.expect)(code).toContain("__oneGetSetupPromise = () => import("), (0, import_vitest.expect)(code).toContain("./src/setupServer.ts"), (0, import_vitest.expect)(code).toContain("getSetupPromise: __oneGetSetupPromise");
}), (0, import_vitest.it)("client uses dynamic import for setupFile", () => {
const plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({
...base,
setupFile: {
client: "./src/setupClient.ts",
server: "./src/setupServer.ts"
}
}), code = loadEntry(plugin, "client");
(0, import_vitest.expect)(code).toContain("__oneGetSetupPromise"), (0, import_vitest.expect)(code).toContain("import("), (0, import_vitest.expect)(code).toContain("./src/setupClient.ts"), (0, import_vitest.expect)(code).toContain("getSetupPromise: __oneGetSetupPromise"), (0, import_vitest.expect)(code).not.toContain('import "./src/setupClient.ts"');
}), (0, import_vitest.it)("native (ios) uses static import for setupFile", () => {
const plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({
...base,
setupFile: {
client: "./src/setupClient.ts",
native: "./src/setupNative.ts"
}
}), code = loadEntry(plugin, "ios");
(0, import_vitest.expect)(code).toContain('import "./src/setupNative.ts"'), (0, import_vitest.expect)(code).not.toContain("__oneGetSetupPromise"), (0, import_vitest.expect)(code).not.toContain("getSetupPromise");
}), (0, import_vitest.it)("android uses static import like ios", () => {
const plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({
...base,
setupFile: {
native: "./src/setupNative.ts"
}
}), code = loadEntry(plugin, "android");
(0, import_vitest.expect)(code).toContain('import "./src/setupNative.ts"'), (0, import_vitest.expect)(code).not.toContain("__oneGetSetupPromise");
}), (0, import_vitest.it)("server (ssr) in dev mode uses static import for dep discovery", () => {
const plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({
...base,
setupFile: {
client: "./src/setupClient.ts",
server: "./src/setupServer.ts"
}
}), code = loadEntry(plugin, "ssr", "serve");
(0, import_vitest.expect)(code).toContain('import "./src/setupServer.ts"'), (0, import_vitest.expect)(code).not.toContain("__oneGetSetupPromise");
}), (0, import_vitest.it)("no setupFile produces no import", () => {
const plugin = (0, import_virtualEntryPlugin.createVirtualEntry)(base), code = loadEntry(plugin, "ssr");
(0, import_vitest.expect)(code).not.toContain("setupServer"), (0, import_vitest.expect)(code).not.toContain("__oneGetSetupPromise"), (0, import_vitest.expect)(code).not.toContain("getSetupPromise");
}), (0, import_vitest.it)("string setupFile applies to all environments", () => {
const plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({
...base,
setupFile: "./src/setup.ts"
}), ssrCode = loadEntry(plugin, "ssr"), clientCode = loadEntry(plugin, "client"), iosCode = loadEntry(plugin, "ios");
(0, import_vitest.expect)(ssrCode).toContain("./src/setup.ts"), (0, import_vitest.expect)(ssrCode).toContain("__oneGetSetupPromise"), (0, import_vitest.expect)(ssrCode).not.toContain('import "./src/setup.ts"'), (0, import_vitest.expect)(clientCode).toContain("./src/setup.ts"), (0, import_vitest.expect)(clientCode).toContain("__oneGetSetupPromise"), (0, import_vitest.expect)(clientCode).not.toContain('import "./src/setup.ts"'), (0, import_vitest.expect)(iosCode).toContain('import "./src/setup.ts"'), (0, import_vitest.expect)(iosCode).not.toContain("__oneGetSetupPromise");
});
});
});
//# sourceMappingURL=virtualEntryPlugin.test.js.map