import { describe, expect, it } from "vite-plus/test"; import { ThreadId } from "@t3tools/contracts"; import { resolveViewedImageAsset, workEntryViewedImagePath } from "./presentation.js"; describe("workEntryViewedImagePath", () => { const entry = { label: "Read", tone: "tool" } as const; it("returns a single image path from supported read entries", () => { expect( workEntryViewedImagePath({ ...entry, requestKind: "file-read", detail: " assets/a.png " }), ).toBe("assets/a.png"); expect( workEntryViewedImagePath({ ...entry, itemType: "dynamic_tool_call", toolTitle: "Read file", detail: "C:\\workspace\\a.webp", }), ).toBe("C:\\workspace\\a.webp"); }); it("rejects non-image, multi-line, and non-read details", () => { expect( workEntryViewedImagePath({ ...entry, itemType: "image_view", detail: "a.txt" }), ).toBeNull(); expect( workEntryViewedImagePath({ ...entry, itemType: "image_view", detail: "a.png\nb.png" }), ).toBeNull(); expect(workEntryViewedImagePath({ ...entry, detail: "a.png" })).toBeNull(); });}); describe("resolveViewedImageAsset", () => { const threadId = ThreadId.make("thread-1"); it("loads t3 attachment paths as attachments", () => { const attachmentId = "11111111-1111-4111-8111-111111111111-22222222-2222-4222-8222-222222222222"; expect( resolveViewedImageAsset(`/Users/demo/.t3/dev/attachments/${attachmentId}.png`, { threadId, workspaceRoot: "/workspace", }), ).toEqual({ resource: { _tag: "attachment", attachmentId }, alt: `${attachmentId}.png`, srcFragment: "", }); }); it("normalizes workspace image sources", () => { expect( resolveViewedImageAsset("screens/logo.svg?v=2#mark", { threadId, workspaceRoot: "/workspace", }), ).toEqual({ resource: { _tag: "workspace-file", threadId, path: "/workspace/screens/logo.svg", }, alt: "logo.svg", srcFragment: "#mark", }); expect(resolveViewedImageAsset("https://example.com/logo.png", { threadId })).toBeNull(); });});
import { describe, expect, it } from "vite-plus/test";
import { ThreadId } from "@t3tools/contracts";
import { resolveViewedImageAsset, workEntryViewedImagePath } from "./presentation.js";
describe("workEntryViewedImagePath", () => {
const entry = { label: "Read", tone: "tool" } as const;
it("returns a single image path from supported read entries", () => {
expect(
workEntryViewedImagePath({ ...entry, requestKind: "file-read", detail: " assets/a.png " }),
).toBe("assets/a.png");
expect(
workEntryViewedImagePath({
...entry,
itemType: "dynamic_tool_call",
toolTitle: "Read file",
detail: "C:\\workspace\\a.webp",
}),
).toBe("C:\\workspace\\a.webp");
});
it("rejects non-image, multi-line, and non-read details", () => {
expect(
workEntryViewedImagePath({ ...entry, itemType: "image_view", detail: "a.txt" }),
).toBeNull();
expect(
workEntryViewedImagePath({ ...entry, itemType: "image_view", detail: "a.png\nb.png" }),
).toBeNull();
expect(workEntryViewedImagePath({ ...entry, detail: "a.png" })).toBeNull();
});
});
describe("resolveViewedImageAsset", () => {
const threadId = ThreadId.make("thread-1");
it("loads t3 attachment paths as attachments", () => {
const attachmentId =
"11111111-1111-4111-8111-111111111111-22222222-2222-4222-8222-222222222222";
expect(
resolveViewedImageAsset(`/Users/demo/.t3/dev/attachments/${attachmentId}.png`, {
threadId,
workspaceRoot: "/workspace",
}),
).toEqual({
resource: { _tag: "attachment", attachmentId },
alt: `${attachmentId}.png`,
srcFragment: "",
});
});
it("normalizes workspace image sources", () => {
expect(
resolveViewedImageAsset("screens/logo.svg?v=2#mark", {
threadId,
workspaceRoot: "/workspace",
}),
).toEqual({
resource: {
_tag: "workspace-file",
threadId,
path: "/workspace/screens/logo.svg",
},
alt: "logo.svg",
srcFragment: "#mark",
});
expect(resolveViewedImageAsset("https://example.com/logo.png", { threadId })).toBeNull();
});
});