import { beforeEach, describe, expect, it, vi } from "vitest"; const invoke = vi.fn(); vi.mock("@tauri-apps/api/core", () => ({ invoke: (...args: unknown[]) => invoke(...args) })); import { TauriScheduledTaskGateway } from "./scheduledTask"; const input = { name: "Nettoyage", command: { command: "find", args: ["dist", "-delete"], cwd: "." }, schedule: { kind: "interval" as const, everyMinutes: 60 }, timezone: "Europe/Paris", enabled: true, timeoutMs: 60_000, }; describe("TauriScheduledTaskGateway", () => { beforeEach(() => invoke.mockReset().mockResolvedValue({})); it("uses the backend command envelopes for list/create/update", async () => { const gateway = new TauriScheduledTaskGateway(); await gateway.list("p1"); await gateway.create("p1", input); await gateway.update("p1", "s1", 4, input); expect(invoke).toHaveBeenNthCalledWith(1, "list_scheduled_project_tasks", { projectId: "p1" }); expect(invoke).toHaveBeenNthCalledWith(2, "create_scheduled_project_task", { request: { projectId: "p1", ...input } }); expect(invoke).toHaveBeenNthCalledWith(3, "update_scheduled_project_task", { request: { projectId: "p1", scheduledTaskId: "s1", auditRevision: 4, ...input } }); }); it("uses flat identity arguments for actions", async () => { const gateway = new TauriScheduledTaskGateway(); await gateway.runNow("p1", "s1"); await gateway.setEnabled("p1", "s1", false); await gateway.delete("p1", "s1"); expect(invoke).toHaveBeenNthCalledWith(1, "run_scheduled_project_task_now", { projectId: "p1", scheduledTaskId: "s1" }); expect(invoke).toHaveBeenNthCalledWith(2, "set_scheduled_project_task_enabled", { projectId: "p1", scheduledTaskId: "s1", enabled: false }); expect(invoke).toHaveBeenNthCalledWith(3, "delete_scheduled_project_task", { projectId: "p1", scheduledTaskId: "s1" }); }); });