Files
continue/core/util/messageContent.test.ts
Nate 184be8f092 npx prettier --check "core/**/*.{js,jsx,ts,tsx,json,css,md}" --ignore-p
ath .gitignore --ignore-path .prettierignore --write
2025-05-25 18:34:39 -07:00

105 lines
3.0 KiB
TypeScript

import {
stripImages,
renderChatMessage,
renderContextItems,
normalizeToMessageParts,
} from "./messageContent.js";
import {
ChatMessage,
ContextItem,
MessageContent,
MessagePart,
} from "../index.js";
describe("messageContent utility functions", () => {
describe("stripImages", () => {
it("should return the string as is if messageContent is a string", () => {
const content: MessageContent = "This is a test message.";
expect(stripImages(content)).toBe("This is a test message.");
});
it("should strip out image parts and join text parts of a message", () => {
const content: MessageContent = [
{ type: "text", text: "This is" },
{
type: "imageUrl",
imageUrl: { url: "http://example.com/image1.png" },
},
{ type: "text", text: "a test message." },
];
expect(stripImages(content)).toBe("This is\na test message.");
});
});
describe("renderChatMessage", () => {
it("should render user, assistant, or system messages with stripped image content", () => {
const message: ChatMessage = {
role: "assistant",
content: [
{ type: "text", text: "Hello," },
{
type: "imageUrl",
imageUrl: { url: "http://example.com/image.png" },
},
{ type: "text", text: "world!" },
],
};
expect(renderChatMessage(message)).toBe("Hello,\nworld!");
});
it("should render tool messages as is", () => {
const message: ChatMessage = {
role: "tool",
content: "Command output message",
toolCallId: "1",
};
expect(renderChatMessage(message)).toBe("Command output message");
});
});
describe("renderContextItems", () => {
it("should concatenate the content of context items with two newlines", () => {
const items: ContextItem[] = [
{
content: "Context Item 1",
name: "Item1",
description: "Description1",
},
{
content: "Context Item 2",
name: "Item2",
description: "Description2",
},
];
expect(renderContextItems(items)).toBe(
"Context Item 1\n\nContext Item 2",
);
});
});
describe("normalizeToMessageParts", () => {
it("should normalize user, assistant, or system messages to MessagePart array", () => {
const message: ChatMessage = {
role: "user",
content: "This is a test message.",
};
const expected: MessagePart[] = [
{ type: "text", text: "This is a test message." },
];
expect(normalizeToMessageParts(message)).toEqual(expected);
});
it("should normalize tool messages to MessagePart array", () => {
const message: ChatMessage = {
role: "tool",
content: "Tool message content",
toolCallId: "1",
};
const expected: MessagePart[] = [
{ type: "text", text: "Tool message content" },
];
expect(normalizeToMessageParts(message)).toEqual(expected);
});
});
});