100 lines
2.5 KiB
TypeScript
100 lines
2.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import type { LogEntry } from "@/lib/types/logs";
|
|
|
|
import { getMessage } from "./columns";
|
|
|
|
describe("getMessage", () => {
|
|
it("returns EI realtime text from input history", () => {
|
|
const log = {
|
|
object: "realtime.turn",
|
|
input_history: [
|
|
{
|
|
role: "user",
|
|
content: [{ type: "text", text: "hello from the browser" }],
|
|
},
|
|
],
|
|
} as unknown as LogEntry;
|
|
|
|
expect(getMessage(log)).toBe("User: hello from the browser");
|
|
});
|
|
|
|
it("returns LM realtime text from output message", () => {
|
|
const log = {
|
|
object: "realtime.turn",
|
|
input_history: [],
|
|
responses_input_history: [],
|
|
output_message: {
|
|
role: "assistant",
|
|
content: [{ type: "text", text: "hello from the model" }],
|
|
},
|
|
} as unknown as LogEntry;
|
|
|
|
expect(getMessage(log)).toBe("Assistant: hello from the model");
|
|
});
|
|
|
|
it("returns split realtime text when both user and assistant are present", () => {
|
|
const log = {
|
|
object: "realtime.turn",
|
|
input_history: [
|
|
{
|
|
role: "user",
|
|
content: [{ type: "text", text: "who are you?" }],
|
|
},
|
|
],
|
|
output_message: {
|
|
role: "assistant",
|
|
content: [{ type: "text", text: "I am the assistant." }],
|
|
},
|
|
} as unknown as LogEntry;
|
|
|
|
expect(getMessage(log)).toBe("User: who are you?\nAssistant: I am the assistant.");
|
|
});
|
|
|
|
it("returns split realtime text including tool output", () => {
|
|
const log = {
|
|
object: "realtime.turn",
|
|
input_history: [
|
|
{
|
|
role: "tool",
|
|
content: [{ type: "text", text: '{"nextResponse":"tool result"}' }],
|
|
},
|
|
{
|
|
role: "user",
|
|
content: [{ type: "text", text: "who are you?" }],
|
|
},
|
|
],
|
|
output_message: {
|
|
role: "assistant",
|
|
content: [{ type: "text", text: "I am the assistant." }],
|
|
},
|
|
} as unknown as LogEntry;
|
|
|
|
expect(getMessage(log)).toBe('Tool Result: {"nextResponse":"tool result"}\nUser: who are you?\nAssistant: I am the assistant.');
|
|
});
|
|
|
|
it("returns realtime assistant tool calls from output message", () => {
|
|
const log = {
|
|
object: "realtime.turn",
|
|
input_history: [
|
|
{
|
|
role: "user",
|
|
content: [{ type: "text", text: "show me a pastel palette" }],
|
|
},
|
|
],
|
|
output_message: {
|
|
role: "assistant",
|
|
tool_calls: [
|
|
{
|
|
function: {
|
|
name: "display_color_palette",
|
|
arguments: '{"theme":"pastel"}',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
} as unknown as LogEntry;
|
|
|
|
expect(getMessage(log)).toBe('User: show me a pastel palette\nAssistant Tool Call: display_color_palette({"theme":"pastel"})');
|
|
});
|
|
}); |