UNPKG

one

Version:

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

93 lines (92 loc) 3 kB
import { describe, expect, test } from "vitest"; import { getPreloadPath } from "../utils/cleanUrl.mjs"; import { getRouteArtifactPaths } from "./getRouteArtifactPath.mjs"; function routeNode(route, contextKey, children = [], type = children.length ? "layout" : "spa") { return { type, loadRoute: () => ({}), children, dynamic: null, route, contextKey }; } describe("getRouteArtifactPath", () => { test("uses the emitted route pattern for a concrete dynamic href", () => { const page = routeNode("[serverId]/[channelId]/index", "./(chat)/[serverId]/[channelId]/index+spa.tsx"); const chat = routeNode("(chat)", "./(chat)/_layout.tsx", [page]); const root = routeNode("", "./_layout.tsx", [chat]); const linking = { config: { screens: {} }, getStateFromPath: () => ({ routes: [{ name: "(chat)", state: { routes: [{ name: "[serverId]/[channelId]/index" }] } }] }) }; const artifactPaths = getRouteArtifactPaths("/acme/general?message=message-1&thread=thread-1", linking, root); expect(artifactPaths).toEqual({ loader: "/:serverId/:channelId/", preload: "/:serverId/:channelId/" }); expect(getPreloadPath(artifactPaths.preload)).toMatch(/\/assets\/=3aserverId_=3achannelId_\d+_preload\.js$/); }); test("keeps the href when the router cannot resolve a route", () => { const root = routeNode("", "./_layout.tsx"); const href = "/unknown?from=test"; expect(getRouteArtifactPaths(href, { config: { screens: {} }, getStateFromPath: () => void 0 }, root)).toEqual({ loader: href, preload: href }); }); test("uses concrete artifacts for a route that inherits spa mode", () => { const page = routeNode("default-mode/[slug]", "./default-mode/[slug].tsx", [], "spa"); const root = routeNode("", "./_layout.tsx", [page]); expect(getRouteArtifactPaths("/default-mode/page-one", { config: { screens: {} }, getStateFromPath: () => ({ routes: [{ name: "default-mode/[slug]" }] }) }, root)).toEqual({ loader: "/default-mode/page-one", preload: "/default-mode/page-one" }); }); test.each([["ssg", { loader: "/blog/intro?from=test", preload: "/blog/intro?from=test" }], ["ssr", { loader: "/blog/intro?from=test", preload: "/blog/:slug" }]])("keeps %s artifacts on their build-time paths", (type, expected) => { const page = routeNode("blog/[slug]", "./blog/[slug].tsx", [], type); const root = routeNode("", "./_layout.tsx", [page]); expect(getRouteArtifactPaths("/blog/intro?from=test", { config: { screens: {} }, getStateFromPath: () => ({ routes: [{ name: "blog/[slug]" }] }) }, root)).toEqual(expected); }); }); //# sourceMappingURL=getRouteArtifactPath.test.mjs.map