one
Version:
One is a new React Framework that makes Vite serve both native and web.
91 lines • 3.28 kB
JavaScript
var import_vitest = require("vitest");
var import_cleanUrl = require("../utils/cleanUrl.cjs");
var import_getRouteArtifactPath = require("./getRouteArtifactPath.cjs");
function routeNode(route, contextKey, children = [], type = children.length ? "layout" : "spa") {
return {
type,
loadRoute: () => ({}),
children,
dynamic: null,
route,
contextKey
};
}
(0, import_vitest.describe)("getRouteArtifactPath", () => {
(0, import_vitest.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 = (0, import_getRouteArtifactPath.getRouteArtifactPaths)("/acme/general?message=message-1&thread=thread-1", linking, root);
(0, import_vitest.expect)(artifactPaths).toEqual({
loader: "/:serverId/:channelId/",
preload: "/:serverId/:channelId/"
});
(0, import_vitest.expect)((0, import_cleanUrl.getPreloadPath)(artifactPaths.preload)).toMatch(/\/assets\/=3aserverId_=3achannelId_\d+_preload\.js$/);
});
(0, import_vitest.test)("keeps the href when the router cannot resolve a route", () => {
const root = routeNode("", "./_layout.tsx");
const href = "/unknown?from=test";
(0, import_vitest.expect)((0, import_getRouteArtifactPath.getRouteArtifactPaths)(href, {
config: {
screens: {}
},
getStateFromPath: () => void 0
}, root)).toEqual({
loader: href,
preload: href
});
});
(0, import_vitest.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]);
(0, import_vitest.expect)((0, import_getRouteArtifactPath.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"
});
});
import_vitest.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]);
(0, import_vitest.expect)((0, import_getRouteArtifactPath.getRouteArtifactPaths)("/blog/intro?from=test", {
config: {
screens: {}
},
getStateFromPath: () => ({
routes: [{
name: "blog/[slug]"
}]
})
}, root)).toEqual(expected);
});
});