UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

103 lines (102 loc) 4.52 kB
import { describe, expect, it, vi } from "vitest"; import { createVirtualEntry } from "./virtualEntryPlugin.native.js"; vi.mock("vxrn", function () { return { isNativeEnvironment: function (env) { return env?.name === "ios" || env?.name === "android"; } }; }); vi.mock("@vxrn/compiler", function () { return { configuration: { enableNativewind: !1 } }; }); function loadEntry(plugin, envName) { var command = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "build", _plugin_configResolved; (_plugin_configResolved = plugin.configResolved) === null || _plugin_configResolved === void 0 || _plugin_configResolved.call(plugin, { root: "", command }); var ctx = { environment: { name: envName } }; return plugin.load.call(ctx, "\0virtual:one-entry"); } describe("virtualEntryPlugin", function () { describe("setupFile", function () { var base = { root: "app", flags: {} }; it("server (ssr) uses lazy dynamic import, not static import", function () { var plugin = createVirtualEntry({ ...base, setupFile: { client: "./src/setupClient.ts", server: "./src/setupServer.ts" } }), code = loadEntry(plugin, "ssr"); expect(code).not.toContain('import "./src/setupServer.ts"'), expect(code).toContain("__oneGetSetupPromise = () => import("), expect(code).toContain("./src/setupServer.ts"), expect(code).toContain("getSetupPromise: __oneGetSetupPromise"); }), it("client uses dynamic import for setupFile", function () { var plugin = createVirtualEntry({ ...base, setupFile: { client: "./src/setupClient.ts", server: "./src/setupServer.ts" } }), code = loadEntry(plugin, "client"); expect(code).toContain("__oneGetSetupPromise"), expect(code).toContain("import("), expect(code).toContain("./src/setupClient.ts"), expect(code).toContain("getSetupPromise: __oneGetSetupPromise"), expect(code).not.toContain('import "./src/setupClient.ts"'); }), it("native (ios) uses static import for setupFile", function () { var plugin = createVirtualEntry({ ...base, setupFile: { client: "./src/setupClient.ts", native: "./src/setupNative.ts" } }), code = loadEntry(plugin, "ios"); expect(code).toContain('import "./src/setupNative.ts"'), expect(code).not.toContain("__oneGetSetupPromise"), expect(code).not.toContain("getSetupPromise"); }), it("android uses static import like ios", function () { var plugin = createVirtualEntry({ ...base, setupFile: { native: "./src/setupNative.ts" } }), code = loadEntry(plugin, "android"); expect(code).toContain('import "./src/setupNative.ts"'), expect(code).not.toContain("__oneGetSetupPromise"); }), it("server (ssr) in dev mode uses static import for dep discovery", function () { var plugin = createVirtualEntry({ ...base, setupFile: { client: "./src/setupClient.ts", server: "./src/setupServer.ts" } }), code = loadEntry(plugin, "ssr", "serve"); expect(code).toContain('import "./src/setupServer.ts"'), expect(code).not.toContain("__oneGetSetupPromise"); }), it("no setupFile produces no import", function () { var plugin = createVirtualEntry(base), code = loadEntry(plugin, "ssr"); expect(code).not.toContain("setupServer"), expect(code).not.toContain("__oneGetSetupPromise"), expect(code).not.toContain("getSetupPromise"); }), it("string setupFile applies to all environments", function () { var plugin = createVirtualEntry({ ...base, setupFile: "./src/setup.ts" }), ssrCode = loadEntry(plugin, "ssr"), clientCode = loadEntry(plugin, "client"), iosCode = loadEntry(plugin, "ios"); expect(ssrCode).toContain("./src/setup.ts"), expect(ssrCode).toContain("__oneGetSetupPromise"), expect(ssrCode).not.toContain('import "./src/setup.ts"'), expect(clientCode).toContain("./src/setup.ts"), expect(clientCode).toContain("__oneGetSetupPromise"), expect(clientCode).not.toContain('import "./src/setup.ts"'), expect(iosCode).toContain('import "./src/setup.ts"'), expect(iosCode).not.toContain("__oneGetSetupPromise"); }); }); }); //# sourceMappingURL=virtualEntryPlugin.test.native.js.map