one
Version:
One is a new React Framework that makes Vite serve both native and web.
131 lines (129 loc) • 5.66 kB
JavaScript
;
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