// @ts-nocheck import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; import { deleteMedia, uploadMedia, uploadMediaAndReturn } from "./admin-media"; const { execute } = vi.hoisted(() => ({ execute: vi.fn() })); vi.mock("@/features/housekeeping/domains/content/services/mutations", () => ({ contentMutationService: { execute }, createContentMutationInvocation: (actor, correlationId) => ({ expectedActorId: actor.id, correlationId, legacy: true, }), })); vi.mock("@/lib/admin/guard", () => ({ requirePermission: vi.fn() })); vi.mock("@/lib/permissions", () => ({ PERMS: { PAGES_EDIT: "pages.edit" } })); vi.mock("next/cache", () => ({ revalidatePath: vi.fn() })); beforeEach(() => { vi.clearAllMocks(); vi.mocked(requirePermission).mockResolvedValue({ id: 1, rank: 7, username: "admin", }); execute.mockResolvedValue({ ok: true, data: { before: null, after: { name: "photo.png" }, output: { url: "/api/media/photo.png" }, }, correlationId: "legacy", }); }); describe("Content media legacy wrappers", () => { it("retains no-file validation", async () => { expect(await uploadMedia(new FormData())).toEqual({ ok: false, error: "No file provided", }); expect(await uploadMediaAndReturn(new FormData())).toBe(""); expect(execute).not.toHaveBeenCalled(); }); it("delegates a valid upload and preserves both result shapes", async () => { const file = new File(["bytes"], "photo.png", { type: "image/png" }); const form = new FormData(); form.set("file", file); expect(await uploadMedia(form)).toEqual({ ok: true }); expect(await uploadMediaAndReturn(form)).toBe("/api/media/photo.png"); expect(execute).toHaveBeenCalledWith(expect.anything(), "media.upload", { file, }); }); it("delegates deletion and preserves revalidation", async () => { await deleteMedia("photo.png"); expect(execute).toHaveBeenCalledWith(expect.anything(), "media.delete", { filename: "photo.png", }); expect(revalidatePath).toHaveBeenCalledWith("/api/media"); expect(revalidatePath).toHaveBeenCalledWith("/ase/content/media/library"); }); });