one
Version:
One is a new React Framework that makes Vite serve both native and web.
109 lines (107 loc) • 8.62 kB
JavaScript
;
var import_vitest = require("vitest"),
import_environmentGuardPlugin = require("./environmentGuardPlugin.native.js");
(0, import_vitest.describe)("environmentGuardPlugin", function () {
(0, import_vitest.describe)("resolveEnvironmentGuard", function () {
(0, import_vitest.it)("returns null for non-guard specifiers", function () {
(0, import_vitest.expect)((0, import_environmentGuardPlugin.resolveEnvironmentGuard)("react", "client")).toBeNull(), (0, import_vitest.expect)((0, import_environmentGuardPlugin.resolveEnvironmentGuard)("vite", "ssr")).toBeNull(), (0, import_vitest.expect)((0, import_environmentGuardPlugin.resolveEnvironmentGuard)("some-other-pkg", "ios")).toBeNull();
}), (0, import_vitest.it)("returns virtual id for server-only", function () {
var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("server-only", "ssr");
(0, import_vitest.expect)(id).toBe("\0one-env-guard:server-only:ssr");
}), (0, import_vitest.it)("returns virtual id for client-only", function () {
var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "client");
(0, import_vitest.expect)(id).toBe("\0one-env-guard:client-only:client");
}), (0, import_vitest.it)("returns virtual id for native-only", function () {
var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("native-only", "ios");
(0, import_vitest.expect)(id).toBe("\0one-env-guard:native-only:ios");
}), (0, import_vitest.it)("returns virtual id for web-only", function () {
var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("web-only", "client");
(0, import_vitest.expect)(id).toBe("\0one-env-guard:web-only:client");
});
}), (0, import_vitest.describe)("loadEnvironmentGuard", function () {
(0, import_vitest.it)("returns null for non-virtual ids", function () {
(0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)("react")).toBeNull(), (0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)("/some/path.ts")).toBeNull();
}), (0, import_vitest.it)("server-only: allowed in ssr", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:ssr");
(0, import_vitest.expect)(result).toBe("export {}");
}), (0, import_vitest.it)("server-only: forbidden in client", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:client");
(0, import_vitest.expect)(result).toContain("throw new Error"), (0, import_vitest.expect)(result).toContain("server-only"), (0, import_vitest.expect)(result).toContain("client");
}), (0, import_vitest.it)("server-only: forbidden in ios", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:ios");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("server-only: forbidden in android", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:android");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("client-only: allowed in client", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:client");
(0, import_vitest.expect)(result).toBe("export {}");
}), (0, import_vitest.it)("client-only: forbidden in ssr", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:ssr");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("client-only: forbidden in ios", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:ios");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("client-only: forbidden in android", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:android");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("native-only: allowed in ios", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:ios");
(0, import_vitest.expect)(result).toBe("export {}");
}), (0, import_vitest.it)("native-only: allowed in android", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:android");
(0, import_vitest.expect)(result).toBe("export {}");
}), (0, import_vitest.it)("native-only: forbidden in client", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:client");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("native-only: forbidden in ssr", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:ssr");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("web-only: allowed in client", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:client");
(0, import_vitest.expect)(result).toBe("export {}");
}), (0, import_vitest.it)("web-only: allowed in ssr", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:ssr");
(0, import_vitest.expect)(result).toBe("export {}");
}), (0, import_vitest.it)("web-only: forbidden in ios", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:ios");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("web-only: forbidden in android", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:android");
(0, import_vitest.expect)(result).toContain("throw new Error");
}), (0, import_vitest.it)("disabled guards always pass", function () {
var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:disabled");
(0, import_vitest.expect)(result).toBe("export {}");
});
}), (0, import_vitest.describe)("options", function () {
(0, import_vitest.it)("disabled: true makes all guards no-ops", function () {
var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "ssr", {
disabled: !0
});
(0, import_vitest.expect)(id).toBe("\0one-env-guard:client-only:disabled"), (0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)(id)).toBe("export {}");
}), (0, import_vitest.it)("disableGuards: disables specific guard types", function () {
var id1 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "ssr", {
disableGuards: ["client-only"]
});
(0, import_vitest.expect)(id1).toBe("\0one-env-guard:client-only:disabled");
var id2 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("server-only", "client", {
disableGuards: ["client-only"]
});
(0, import_vitest.expect)(id2).toBe("\0one-env-guard:server-only:client"), (0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)(id2)).toContain("throw new Error");
}), (0, import_vitest.it)("disableGuards: can disable multiple guards", function () {
var id1 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "ssr", {
disableGuards: ["client-only", "server-only"]
});
(0, import_vitest.expect)(id1).toBe("\0one-env-guard:client-only:disabled");
var id2 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("server-only", "client", {
disableGuards: ["client-only", "server-only"]
});
(0, import_vitest.expect)(id2).toBe("\0one-env-guard:server-only:disabled");
var id3 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("native-only", "client", {
disableGuards: ["client-only", "server-only"]
});
(0, import_vitest.expect)(id3).toBe("\0one-env-guard:native-only:client");
});
});
});
//# sourceMappingURL=environmentGuardPlugin.test.native.js.map