Files
puaros/packages/ipuaro/tests/unit/domain/value-objects/ChatMessage.test.ts
imfozilbek 225480c806 feat(ipuaro): implement Redis storage module (v0.2.0)
- Add RedisClient with connection management and AOF config
- Add RedisStorage implementing full IStorage interface
- Add Redis key schema for project and session data
- Add generateProjectName() utility
- Add 68 unit tests for Redis module (159 total)
- Update ESLint: no-unnecessary-type-parameters as warn
2025-11-30 00:22:49 +05:00

77 lines
2.5 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")
})
})
describe("createSystemMessage", () => {
it("should create system message", () => {
const msg = createSystemMessage("System prompt")
expect(msg.role).toBe("system")
expect(msg.content).toBe("System prompt")
})
})
})