UNPKG

one

Version:

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

131 lines (129 loc) 5.66 kB
"use strict"; var import_vitest = require("vitest"); var import_virtualEntryPlugin = require("./virtualEntryPlugin.native.js"); import_vitest.vi.mock("vxrn", function () { return { isNativeEnvironment: function (env) { return (env === null || env === void 0 ? void 0 : env.name) === "ios" || (env === null || env === void 0 ? void 0 : env.name) === "android"; } }; }); import_vitest.vi.mock("@vxrn/compiler", function () { return { configuration: { enableNativewind: false } }; }); function loadEntry(plugin, envName) { var command = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "build"; var _plugin_configResolved; (_plugin_configResolved = plugin.configResolved) === null || _plugin_configResolved === void 0 ? void 0 : _plugin_configResolved.call(plugin, { root: "", command }); var ctx = { environment: { name: envName } }; return plugin.load.call(ctx, "\0virtual:one-entry"); } (0, import_vitest.describe)("virtualEntryPlugin", function () { (0, import_vitest.describe)("setupFile", function () { var base = { root: "app", flags: {} }; (0, import_vitest.it)("server (ssr) uses lazy dynamic import, not static import", function () { var plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({ ...base, setupFile: { client: "./src/setupClient.ts", server: "./src/setupServer.ts" } }); var 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", function () { var plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({ ...base, setupFile: { client: "./src/setupClient.ts", server: "./src/setupServer.ts" } }); var 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", function () { var plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({ ...base, setupFile: { client: "./src/setupClient.ts", native: "./src/setupNative.ts" } }); var 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", function () { var plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({ ...base, setupFile: { native: "./src/setupNative.ts" } }); var 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", function () { var plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({ ...base, setupFile: { client: "./src/setupClient.ts", server: "./src/setupServer.ts" } }); var 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", function () { var plugin = (0, import_virtualEntryPlugin.createVirtualEntry)(base); var 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", function () { var plugin = (0, import_virtualEntryPlugin.createVirtualEntry)({ ...base, setupFile: "./src/setup.ts" }); var ssrCode = loadEntry(plugin, "ssr"); var clientCode = loadEntry(plugin, "client"); var 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.native.js.map