UNPKG

one

Version:

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

144 lines (143 loc) 5.15 kB
var import_vitest = require("vitest"), import_getServerManifest = require("./getServerManifest"); function makeRouteNode(overrides) { return { loadRoute: () => ({}), contextKey: "", route: "", children: [], dynamic: null, type: "ssg", ...overrides }; } (0, import_vitest.describe)("getServerManifest route specificity", () => { (0, import_vitest.it)("static segment /blog/[slug] should come before fully dynamic /[a]/[b]", () => { const root = makeRouteNode({ route: "", children: [ // group (site) with blog/[slug] makeRouteNode({ route: "(site)", children: [ makeRouteNode({ route: "blog/[slug]", contextKey: "(site)/blog/[slug]+ssg.tsx", type: "ssg", dynamic: [{ name: "slug", deep: !1 }], children: [] }) ] }), // group (chat) with [serverId]/[channelId] makeRouteNode({ route: "(chat)", children: [ makeRouteNode({ route: "[serverId]", dynamic: [{ name: "serverId", deep: !1 }], children: [ makeRouteNode({ route: "[channelId]", dynamic: [{ name: "channelId", deep: !1 }], children: [ makeRouteNode({ route: "index", contextKey: "(chat)/[serverId]/[channelId]/index.tsx", type: "spa", children: [] }) ] }) ] }) ] }) ] }), pages = (0, import_getServerManifest.getServerManifest)(root).pageRoutes.map((r) => r.file), blogIdx = pages.indexOf("(site)/blog/[slug]+ssg.tsx"), chatIdx = pages.indexOf("(chat)/[serverId]/[channelId]/index.tsx"); (0, import_vitest.expect)(blogIdx).toBeGreaterThanOrEqual(0), (0, import_vitest.expect)(chatIdx).toBeGreaterThanOrEqual(0), (0, import_vitest.expect)(blogIdx).toBeLessThan(chatIdx); }), (0, import_vitest.it)("/blog should come before /[slug]", () => { const root = makeRouteNode({ route: "", children: [ makeRouteNode({ route: "blog", contextKey: "blog.tsx", type: "ssg", children: [] }), makeRouteNode({ route: "[slug]", contextKey: "[slug].tsx", type: "ssr", dynamic: [{ name: "slug", deep: !1 }], children: [] }) ] }), pages = (0, import_getServerManifest.getServerManifest)(root).pageRoutes.map((r) => r.file); (0, import_vitest.expect)(pages.indexOf("blog.tsx")).toBeLessThan(pages.indexOf("[slug].tsx")); }), (0, import_vitest.it)("/blog/hello-world should match blog route first, not [serverId]/[channelId]", () => { const root = makeRouteNode({ route: "", children: [ makeRouteNode({ route: "(site)", children: [ makeRouteNode({ route: "blog/[slug]", contextKey: "(site)/blog/[slug]+ssg.tsx", type: "ssg", dynamic: [{ name: "slug", deep: !1 }], children: [] }) ] }), makeRouteNode({ route: "(chat)", children: [ makeRouteNode({ route: "[serverId]", dynamic: [{ name: "serverId", deep: !1 }], children: [ makeRouteNode({ route: "[channelId]", dynamic: [{ name: "channelId", deep: !1 }], children: [ makeRouteNode({ route: "index", contextKey: "(chat)/[serverId]/[channelId]/index.tsx", type: "spa", children: [] }) ] }) ] }) ] }) ] }), manifest = (0, import_getServerManifest.getServerManifest)(root), pathname = "/blog/hello-world", matched = manifest.pageRoutes.find((route) => new RegExp(route.namedRegex).test(pathname)); (0, import_vitest.expect)(matched?.file).toBe("(site)/blog/[slug]+ssg.tsx"); }), (0, import_vitest.it)("[slug] should come before [...catchAll]", () => { const root = makeRouteNode({ route: "", children: [ makeRouteNode({ route: "[...catchAll]", contextKey: "[...catchAll].tsx", type: "ssr", dynamic: [{ name: "catchAll", deep: !0 }], children: [] }), makeRouteNode({ route: "[slug]", contextKey: "[slug].tsx", type: "ssr", dynamic: [{ name: "slug", deep: !1 }], children: [] }) ] }), pages = (0, import_getServerManifest.getServerManifest)(root).pageRoutes.map((r) => r.file); (0, import_vitest.expect)(pages.indexOf("[slug].tsx")).toBeLessThan(pages.indexOf("[...catchAll].tsx")); }); }); //# sourceMappingURL=getServerManifest.test.js.map