94 lines
2.4 KiB
TypeScript
94 lines
2.4 KiB
TypeScript
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");
|
|
});
|
|
});
|