UNPKG

one

Version:

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

64 lines (63 loc) 2.91 kB
import { afterEach, describe, expect, it } from "vitest"; import { getPathWithRecoveredDynamicSegment, getPathnameWithRecoveredDynamicSegment, hasLostDynamicSegment, normalizeRoutePathname } from "./path.mjs"; const originalBaseUrl = process.env.EXPO_BASE_URL; const originalNodeEnv = process.env.NODE_ENV; afterEach(() => { if (originalBaseUrl === void 0) { delete process.env.EXPO_BASE_URL; } else { process.env.EXPO_BASE_URL = originalBaseUrl; } if (originalNodeEnv === void 0) { delete process.env.NODE_ENV; } else { process.env.NODE_ENV = originalNodeEnv; } }); describe("hasLostDynamicSegment", () => { it('detects a literal "undefined" segment', () => { expect(hasLostDynamicSegment("/p/undefined")).toBe(true); expect(hasLostDynamicSegment("/users/undefined/posts")).toBe(true); expect(hasLostDynamicSegment("/undefined")).toBe(true); }); it('does not match "undefined" inside another segment', () => { expect(hasLostDynamicSegment("/p/undefined-things")).toBe(false); expect(hasLostDynamicSegment("/p/notundefined")).toBe(false); expect(hasLostDynamicSegment("/p/foo-undefined-bar")).toBe(false); }); it("ignores search and hash values", () => { expect(hasLostDynamicSegment("/p/undefined?tab=profile")).toBe(true); expect(hasLostDynamicSegment("/p/mai1015?x=undefined")).toBe(false); expect(hasLostDynamicSegment("/p/mai1015#undefined")).toBe(false); }); }); describe("normalizeRoutePathname", () => { it("strips search, hash, and trailing slash", () => { expect(normalizeRoutePathname("/p/mai1015/?tab=profile#top")).toBe("/p/mai1015"); expect(normalizeRoutePathname("/")).toBe("/"); }); it("strips the production base url", () => { process.env.NODE_ENV = "production"; process.env.EXPO_BASE_URL = "/expo/prefix"; expect(normalizeRoutePathname("/expo/prefix/p/mai1015?tab=profile")).toBe("/p/mai1015"); }); }); describe("getPathWithRecoveredDynamicSegment", () => { it("uses the first uncorrupted candidate path", () => { expect(getPathWithRecoveredDynamicSegment(["/p/undefined", "/p/mai1015?tab=profile"], "/p/browser?tab=profile")).toBe("/p/mai1015?tab=profile"); }); it("keeps an empty uncorrupted candidate path", () => { expect(getPathWithRecoveredDynamicSegment([""], "/browser")).toBe(""); }); it("falls back when every candidate path is corrupted", () => { expect(getPathWithRecoveredDynamicSegment(["/p/undefined"], "/p/browser?tab=profile")).toBe("/p/browser?tab=profile"); }); }); describe("getPathnameWithRecoveredDynamicSegment", () => { it("normalizes the recovered browser pathname", () => { process.env.NODE_ENV = "production"; process.env.EXPO_BASE_URL = "/expo/prefix"; expect(getPathnameWithRecoveredDynamicSegment("/p/undefined", "/expo/prefix/p/mai1015?tab=profile")).toBe("/p/mai1015"); }); }); //# sourceMappingURL=path.test.mjs.map