Files
puaros/packages/ipuaro/tests/unit/domain/value-objects/ChatMessage.test.ts
imfozilbek 4ad5a209c4 feat(ipuaro): add edit tools (v0.6.0)
Add file editing capabilities:
- EditLinesTool: replace lines with hash conflict detection
- CreateFileTool: create files with directory auto-creation
- DeleteFileTool: delete files from filesystem and storage

Total: 664 tests, 97.77% coverage
2025-12-01 01:44:45 +05:00

84 lines
2.8 KiB
TypeScript

import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"
import {
createUserMessage,
createAssistantMessage,
createToolMessage,
createSystemMessage,
} from "../../../../src/domain/value-objects/ChatMessage.js"
describe("ChatMessage", () => {
beforeEach(() => {
vi.useFakeTimers()
vi.setSystemTime(new Date("2025-01-01T00:00:00Z"))
})
afterEach(() => {
vi.useRealTimers()
})
describe("createUserMessage", () => {
it("should create user message", () => {
const msg = createUserMessage("Hello")
expect(msg.role).toBe("user")
expect(msg.content).toBe("Hello")
expect(msg.timestamp).toBe(Date.now())
})
})
describe("createAssistantMessage", () => {
it("should create assistant message without tool calls", () => {
const msg = createAssistantMessage("Response")
expect(msg.role).toBe("assistant")
expect(msg.content).toBe("Response")
expect(msg.toolCalls).toBeUndefined()
})
it("should create assistant message with tool calls", () => {
const toolCalls = [{ id: "1", name: "get_lines", params: {}, timestamp: Date.now() }]
const stats = { tokens: 100, timeMs: 500, toolCalls: 1 }
const msg = createAssistantMessage("Response", toolCalls, stats)
expect(msg.toolCalls).toEqual(toolCalls)
expect(msg.stats).toEqual(stats)
})
})
describe("createToolMessage", () => {
it("should create tool message with results", () => {
const results = [{ callId: "1", success: true, data: "data", executionTimeMs: 10 }]
const msg = createToolMessage(results)
expect(msg.role).toBe("tool")
expect(msg.toolResults).toEqual(results)
expect(msg.content).toContain("[1] Success")
})
it("should format error results", () => {
const results = [
{ callId: "2", success: false, error: "Not found", executionTimeMs: 5 },
]
const msg = createToolMessage(results)
expect(msg.content).toContain("[2] Error: Not found")
})
it("should handle error result without error message", () => {
const results = [{ callId: "3", success: false, executionTimeMs: 5 }]
const msg = createToolMessage(results)
expect(msg.content).toContain("[3] Error: Unknown error")
})
})
describe("createSystemMessage", () => {
it("should create system message", () => {
const msg = createSystemMessage("System prompt")
expect(msg.role).toBe("system")
expect(msg.content).toBe("System prompt")
})
})
})