diff --git a/packages/api/src/__tests__/assistant-tools-query-change-history.test.ts b/packages/api/src/__tests__/assistant-tools-query-change-history.test.ts new file mode 100644 index 0000000..90f427c --- /dev/null +++ b/packages/api/src/__tests__/assistant-tools-query-change-history.test.ts @@ -0,0 +1,91 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { SystemRole } from "@capakraken/shared"; + +vi.mock("@capakraken/application", async (importOriginal) => { + const actual = await importOriginal(); + return { + ...actual, + getDashboardBudgetForecast: vi.fn().mockResolvedValue([]), + getDashboardPeakTimes: vi.fn().mockResolvedValue([]), + listAssignmentBookings: vi.fn().mockResolvedValue([]), + }; +}); + +import { executeTool } from "../router/assistant-tools.js"; +import { createToolContext } from "./assistant-tools-audit-task-test-helpers.js"; + +describe("assistant query change history tool", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("queries recent change history through the real audit router path", async () => { + const ctx = createToolContext( + { + auditLog: { + findMany: vi.fn().mockResolvedValue([ + { + id: "audit_1", + entityType: "Project", + entityId: "project_1", + entityName: "Gelddruckmaschine", + action: "UPDATE", + userId: "user_1", + source: "assistant", + summary: "Adjusted project margin", + createdAt: new Date("2026-03-28T10:00:00.000Z"), + user: { + id: "user_1", + name: "Larissa", + email: "larissa@example.com", + }, + }, + ]), + }, + }, + { userRole: SystemRole.CONTROLLER }, + ); + + const result = await executeTool( + "query_change_history", + JSON.stringify({ + entityType: "Project", + search: "Gelddruckmaschine", + action: "UPDATE", + daysBack: 14, + limit: 5, + }), + ctx, + ); + + expect(JSON.parse(result.content)).toEqual({ + filters: { + entityType: "Project", + userId: null, + action: "UPDATE", + search: "Gelddruckmaschine", + daysBack: 14, + }, + itemCount: 1, + nextCursor: null, + items: [ + { + id: "audit_1", + entityType: "Project", + entityId: "project_1", + entityName: "Gelddruckmaschine", + action: "UPDATE", + userId: "user_1", + source: "assistant", + summary: "Adjusted project margin", + createdAt: "2026-03-28T10:00:00.000Z", + user: { + id: "user_1", + name: "Larissa", + email: "larissa@example.com", + }, + }, + ], + }); + }); +});