UNPKG

one

Version:

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

99 lines (98 loc) 4.11 kB
import { describe, expect, it } from "vitest"; import { getPathnameFromFilePath } from "./getPathnameFromFilePath.native.js"; describe("getPathnameFromFilePath", function () { it("index route", function () { expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/"); }); it("simple page", function () { expect(getPathnameFromFilePath("/about+ssg.tsx")).toBe("/about"); }); it("dynamic param", function () { expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/"); }); it("nested dynamic params", function () { expect(getPathnameFromFilePath("/[serverId]/[channelId]/index+spa.tsx")).toBe("/:serverId/:channelId/"); }); it("catch-all route without params", function () { expect(getPathnameFromFilePath("/docs/[...slug]+ssg.tsx")).toBe("/docs/*"); }); it("catch-all route with params", function () { expect(getPathnameFromFilePath("/docs/[...slug]+ssg.tsx", { slug: "intro/basics" })).toBe("/docs/intro/basics"); }); it("route groups are stripped", function () { expect(getPathnameFromFilePath("/(site)/(legal)/terms+ssg.tsx")).toBe("/terms"); }); it("nested path", function () { expect(getPathnameFromFilePath("/dashboard/settings/index+ssr.tsx")).toBe("/dashboard/settings/"); }); it("folder render mode suffix stripped", function () { expect(getPathnameFromFilePath("/folder+ssr/page+ssg.tsx")).toBe("/folder/page"); }); it("+not-found route", function () { expect(getPathnameFromFilePath("/not-found/+not-found+ssg.tsx")).toBe("/not-found/+not-found"); }); it("dynamic param with +not-found", function () { expect(getPathnameFromFilePath("/[slug]/+not-found+ssr.tsx")).toBe("/:slug/+not-found"); }); it("underscore-prefixed path segment", function () { expect(getPathnameFromFilePath("/_/home/index+spa.tsx")).toBe("/_/home/"); }); describe("input must start with / not ./", function () { it('"./" prefix produces wrong keys', function () { var broken = getPathnameFromFilePath("./[serverId]/index+spa.tsx"); expect(broken).toBe("./:serverId/"); expect(broken).not.toBe("/:serverId/"); }); it('"/" prefix produces correct keys', function () { expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/"); }); it('"./" root produces wrong key', function () { var broken = getPathnameFromFilePath("./index+spa.tsx"); expect(broken).toBe("./"); expect(broken).not.toBe("/"); }); it('"/" root produces correct key', function () { expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/"); }); }); describe("with params substitution", function () { it("substitutes dynamic param", function () { expect(getPathnameFromFilePath("/ssr/[param]+ssr.tsx", { param: "hello" })).toBe("/ssr/hello"); }); it("substitutes params in both dirname and filename", function () { expect(getPathnameFromFilePath("/servers/[serverId]/[channelId]+spa.tsx", { serverId: "abc", channelId: "123" })).toBe("/servers/abc/123"); }); it("substitutes dirname params for SSG dynamic routes", function () { expect(getPathnameFromFilePath("/[lang]/index+ssg.tsx", { lang: "en" }, true)).toBe("/en/"); expect(getPathnameFromFilePath("/[lang]/index+ssg.tsx", { lang: "ko" }, true)).toBe("/ko/"); }); it("substitutes nested dirname params", function () { expect(getPathnameFromFilePath("/[lang]/[region]/index+ssg.tsx", { lang: "en", region: "us" }, true)).toBe("/en/us/"); }); }); describe("strict mode", function () { it("throws on missing param in strict mode", function () { expect(function () { return getPathnameFromFilePath("/[id]+ssr.tsx", {}, true); }).toThrow("Params doesn't fit route"); }); it("returns placeholder in non-strict mode", function () { expect(getPathnameFromFilePath("/[id]+ssr.tsx", {}, false)).toBe("/:id"); }); }); }); //# sourceMappingURL=getPathnameFromFilePath.test.native.js.map