import { describe, expect, it } from "vite-plus/test";import { EnvironmentId, ThreadId } from "@t3tools/contracts"; import { buildThreadFilesNavigation, buildThreadFilesRoutePath } from "./routes"; const thread = { environmentId: EnvironmentId.make("environment-1"), threadId: ThreadId.make("thread-1"),}; describe("thread file routes", () => { it("includes an optional source line in string routes", () => { expect(buildThreadFilesRoutePath(thread, "src/main.ts", 42)).toBe( "/threads/environment-1/thread-1/files/src/main.ts?line=42", ); }); it("encodes each file path segment without encoding separators", () => { expect(buildThreadFilesRoutePath(thread, "docs/My File#1.md")).toBe( "/threads/environment-1/thread-1/files/docs/My%20File%231.md", ); }); it("builds typed navigation params for a file and source line", () => { expect(buildThreadFilesNavigation(thread, "src/main.ts", 42)).toEqual({ pathname: "/threads/[environmentId]/[threadId]/files/[...path]", params: { environmentId: "environment-1", threadId: "thread-1", path: ["src", "main.ts"], line: "42", }, }); }); it("targets the files index when no file path is provided", () => { expect(buildThreadFilesNavigation(thread)).toEqual({ pathname: "/threads/[environmentId]/[threadId]/files", params: { environmentId: "environment-1", threadId: "thread-1", }, }); });});
import { describe, expect, it } from "vite-plus/test";
import { EnvironmentId, ThreadId } from "@t3tools/contracts";
import { buildThreadFilesNavigation, buildThreadFilesRoutePath } from "./routes";
const thread = {
environmentId: EnvironmentId.make("environment-1"),
threadId: ThreadId.make("thread-1"),
};
describe("thread file routes", () => {
it("includes an optional source line in string routes", () => {
expect(buildThreadFilesRoutePath(thread, "src/main.ts", 42)).toBe(
"/threads/environment-1/thread-1/files/src/main.ts?line=42",
);
});
it("encodes each file path segment without encoding separators", () => {
expect(buildThreadFilesRoutePath(thread, "docs/My File#1.md")).toBe(
"/threads/environment-1/thread-1/files/docs/My%20File%231.md",
);
});
it("builds typed navigation params for a file and source line", () => {
expect(buildThreadFilesNavigation(thread, "src/main.ts", 42)).toEqual({
pathname: "/threads/[environmentId]/[threadId]/files/[...path]",
params: {
environmentId: "environment-1",
threadId: "thread-1",
path: ["src", "main.ts"],
line: "42",
},
});
});
it("targets the files index when no file path is provided", () => {
expect(buildThreadFilesNavigation(thread)).toEqual({
pathname: "/threads/[environmentId]/[threadId]/files",
params: {
environmentId: "environment-1",
threadId: "thread-1",
},
});
});
});