one
Version:
One is a new React Framework that makes Vite serve both native and web.
95 lines • 5.65 kB
JavaScript
var import_vitest = require("vitest");
var import_getPathnameFromFilePath = require("./getPathnameFromFilePath.cjs");
(0, import_vitest.describe)("getPathnameFromFilePath", () => {
(0, import_vitest.it)("index route", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/index+spa.tsx")).toBe("/");
});
(0, import_vitest.it)("simple page", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/about+ssg.tsx")).toBe("/about");
});
(0, import_vitest.it)("dynamic param", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
});
(0, import_vitest.it)("nested dynamic params", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[serverId]/[channelId]/index+spa.tsx")).toBe("/:serverId/:channelId/");
});
(0, import_vitest.it)("catch-all route without params", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/docs/[...slug]+ssg.tsx")).toBe("/docs/*");
});
(0, import_vitest.it)("catch-all route with params", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/docs/[...slug]+ssg.tsx", {
slug: "intro/basics"
})).toBe("/docs/intro/basics");
});
(0, import_vitest.it)("route groups are stripped", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/(site)/(legal)/terms+ssg.tsx")).toBe("/terms");
});
(0, import_vitest.it)("nested path", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/dashboard/settings/index+ssr.tsx")).toBe("/dashboard/settings/");
});
(0, import_vitest.it)("folder render mode suffix stripped", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/folder+ssr/page+ssg.tsx")).toBe("/folder/page");
});
(0, import_vitest.it)("+not-found route", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/not-found/+not-found+ssg.tsx")).toBe("/not-found/+not-found");
});
(0, import_vitest.it)("dynamic param with +not-found", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[slug]/+not-found+ssr.tsx")).toBe("/:slug/+not-found");
});
(0, import_vitest.it)("underscore-prefixed path segment", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/_/home/index+spa.tsx")).toBe("/_/home/");
});
(0, import_vitest.describe)("input must start with / not ./", () => {
(0, import_vitest.it)('"./" prefix produces wrong keys', () => {
const broken = (0, import_getPathnameFromFilePath.getPathnameFromFilePath)("./[serverId]/index+spa.tsx");
(0, import_vitest.expect)(broken).toBe("./:serverId/");
(0, import_vitest.expect)(broken).not.toBe("/:serverId/");
});
(0, import_vitest.it)('"/" prefix produces correct keys', () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
});
(0, import_vitest.it)('"./" root produces wrong key', () => {
const broken = (0, import_getPathnameFromFilePath.getPathnameFromFilePath)("./index+spa.tsx");
(0, import_vitest.expect)(broken).toBe("./");
(0, import_vitest.expect)(broken).not.toBe("/");
});
(0, import_vitest.it)('"/" root produces correct key', () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/index+spa.tsx")).toBe("/");
});
});
(0, import_vitest.describe)("with params substitution", () => {
(0, import_vitest.it)("substitutes dynamic param", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/ssr/[param]+ssr.tsx", {
param: "hello"
})).toBe("/ssr/hello");
});
(0, import_vitest.it)("substitutes params in both dirname and filename", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/servers/[serverId]/[channelId]+spa.tsx", {
serverId: "abc",
channelId: "123"
})).toBe("/servers/abc/123");
});
(0, import_vitest.it)("substitutes dirname params for SSG dynamic routes", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[lang]/index+ssg.tsx", {
lang: "en"
}, true)).toBe("/en/");
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[lang]/index+ssg.tsx", {
lang: "ko"
}, true)).toBe("/ko/");
});
(0, import_vitest.it)("substitutes nested dirname params", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[lang]/[region]/index+ssg.tsx", {
lang: "en",
region: "us"
}, true)).toBe("/en/us/");
});
});
(0, import_vitest.describe)("strict mode", () => {
(0, import_vitest.it)("throws on missing param in strict mode", () => {
(0, import_vitest.expect)(() => (0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[id]+ssr.tsx", {}, true)).toThrow("Params doesn't fit route");
});
(0, import_vitest.it)("returns placeholder in non-strict mode", () => {
(0, import_vitest.expect)((0, import_getPathnameFromFilePath.getPathnameFromFilePath)("/[id]+ssr.tsx", {}, false)).toBe("/:id");
});
});
});