import { beforeEach, describe, expect, it, vi } from "vitest"; const apiGet = vi.fn(); const apiPost = vi.fn(); const apiRequestRaw = vi.fn(); vi.mock("@/api/api", () => ({ apiGet: (...args: unknown[]) => apiGet(...args), apiPost: (...args: unknown[]) => apiPost(...args), apiRequestRaw: (...args: unknown[]) => apiRequestRaw(...args), })); import { upliftsApi } from "@/domain/uplifts/api/uplifts-api"; describe("upliftsApi", () => { beforeEach(() => { apiGet.mockReset(); apiPost.mockReset(); apiRequestRaw.mockReset(); }); it("posts admin revoke decisions to the uplift decision endpoint", async () => { apiPost.mockResolvedValueOnce(undefined); await upliftsApi.revoke(42, "Scope was already covered"); expect(apiPost).toHaveBeenCalledWith("uplifts/42/revoke", { note: "Scope was already covered", }); }); it("reads the backend tier decision permission", async () => { apiGet.mockResolvedValueOnce({ status: "Success", data: { canApprove: true } }); await expect(upliftsApi.canApprove(1)).resolves.toBe(true); expect(apiGet).toHaveBeenCalledWith("uplifts/can-approve", { searchParams: { tier: 1 } }); }); it("treats a missing tier permission as false", async () => { apiGet.mockResolvedValueOnce({ status: "Success", data: {} }); await expect(upliftsApi.canApprove(2)).resolves.toBe(false); }); });