import { describe, expect, it } from "vitest"; import { buildControlUiAvatarUrl, normalizeControlUiBasePath, resolveAssistantAvatarUrl, } from "./control-ui-shared.js"; describe("resolveAssistantAvatarUrl", () => { it("normalizes base paths", () => { expect(normalizeControlUiBasePath()).toBe(""); expect(normalizeControlUiBasePath("")).toBe(""); expect(normalizeControlUiBasePath(" ")).toBe(""); expect(normalizeControlUiBasePath("/")).toBe(""); expect(normalizeControlUiBasePath("ui")).toBe("/ui"); expect(normalizeControlUiBasePath("/ui/")).toBe("/ui"); }); it("builds avatar URLs", () => { expect(buildControlUiAvatarUrl("", "main")).toBe("/avatar/main"); expect(buildControlUiAvatarUrl("/ui", "main")).toBe("/ui/avatar/main"); }); it("keeps remote and data URLs", () => { expect( resolveAssistantAvatarUrl({ avatar: "https://example.com/avatar.png", agentId: "main", basePath: "/ui", }), ).toBe("https://example.com/avatar.png"); expect( resolveAssistantAvatarUrl({ avatar: "data:image/png;base64,abc", agentId: "main", basePath: "/ui", }), ).toBe("data:image/png;base64,abc"); }); it("prefixes basePath for /avatar endpoints", () => { expect( resolveAssistantAvatarUrl({ avatar: "/avatar/main", agentId: "main", basePath: "/ui", }), ).toBe("/ui/avatar/main"); expect( resolveAssistantAvatarUrl({ avatar: "/ui/avatar/main", agentId: "main", basePath: "/ui", }), ).toBe("/ui/avatar/main"); }); it("maps local avatar paths to the avatar endpoint", () => { expect( resolveAssistantAvatarUrl({ avatar: "avatars/me.png", agentId: "main", basePath: "/ui", }), ).toBe("/ui/avatar/main"); expect( resolveAssistantAvatarUrl({ avatar: "avatars/profile", agentId: "main", basePath: "/ui", }), ).toBe("/ui/avatar/main"); }); it("leaves local paths untouched when agentId is missing", () => { expect( resolveAssistantAvatarUrl({ avatar: "avatars/me.png", basePath: "/ui", }), ).toBe("avatars/me.png"); }); it("keeps short text avatars", () => { expect( resolveAssistantAvatarUrl({ avatar: "PS", agentId: "main", basePath: "/ui", }), ).toBe("PS"); }); });