45 lines · 1.5 KB · TypeScript
RawDownload
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",      },    });  });});