// src/services/__tests__/chat.service.test.ts // Copyright (C) 2026 DTP Technologies, LLC // All Rights Reserved import { describe, it, expect } from "vitest"; describe("ChatService Types", () => { describe("ChatSessionMode enum values", () => { it("should have Plan mode", () => { const mode = "plan"; expect(mode).toBe("plan"); }); it("should have Build mode", () => { const mode = "build"; expect(mode).toBe("build"); }); it("should have Test mode", () => { const mode = "test"; expect(mode).toBe("test"); }); it("should have Ship mode", () => { const mode = "ship"; expect(mode).toBe("ship"); }); it("should have Develop mode", () => { const mode = "dev"; expect(mode).toBe("dev"); }); }); describe("ChatSessionType enum values", () => { it("should have Desktop type", () => { const type = "desktop"; expect(type).toBe("desktop"); }); it("should have Mobile type", () => { const type = "mobile"; expect(type).toBe("mobile"); }); it("should have Extension type", () => { const type = "extension"; expect(type).toBe("extension"); }); }); describe("IChatSessionListItem interface", () => { const session = { _id: "507f1f77bcf86cd799439011", name: "Test Session", lastMessageAt: new Date(), turnCount: 5, toolCallCount: 10, inputTokens: 1000, outputTokens: 2000, createdAt: new Date(), mode: "build", }; it("should have _id", () => { expect(session._id).toBeDefined(); }); it("should have name", () => { expect(session.name).toBe("Test Session"); }); it("should have turnCount", () => { expect(session.turnCount).toBe(5); }); it("should have inputTokens", () => { expect(session.inputTokens).toBe(1000); }); it("should have outputTokens", () => { expect(session.outputTokens).toBe(2000); }); }); describe("IChatSessionDetail extended interface", () => { const detail = { _id: "507f1f77bcf86cd799439011", name: "Test Session", lastMessageAt: new Date(), turnCount: 5, toolCallCount: 10, inputTokens: 1000, outputTokens: 2000, createdAt: new Date(), mode: "build", user: "507f1f77bcf86cd799439012", project: "My Project", type: "desktop" as const, pins: [{ content: "pin1" }], }; it("should have user field for ownership", () => { expect(detail.user).toBeDefined(); }); it("should have project field", () => { expect(detail.project).toBe("My Project"); }); it("should have type field", () => { expect(detail.type).toBe("desktop"); }); it("should have pins array", () => { expect(Array.isArray(detail.pins)).toBe(true); }); }); });