import { describe, expect, it } from "vitest"; import { buildEvolinkImagePayload, extractEvolinkResultUrls, getEvolinkTaskId, mapEvolinkStatus } from "@/lib/evolink/image-client"; describe("EvoLink image client helpers", () => { it("builds payloads for GPT Image 2 generation", () => { const payload = buildEvolinkImagePayload("image.generate", { prompt: "商品海报", imageUrls: ["https://example.com/ref.png"], width: 2048, height: 2048 }, { baseUrl: "https://api.evolink.ai", model: "gpt-image-2", quality: "medium", resolution: "2K" }); expect(payload).toMatchObject({ model: "gpt-image-2", prompt: "商品海报", image_urls: ["https://example.com/ref.png"], size: "1:1", quality: "medium", resolution: "2K", n: 1 }); }); it("maps inpainting original and mask URLs", () => { const payload = buildEvolinkImagePayload("image.inpaint", { prompt: "移除背景杂物", quality: "high", imageUrls: ["https://example.com/original.png", "https://example.com/mask.png"] }, { baseUrl: "https://api.evolink.ai", model: "gpt-image-2", quality: "medium" }); expect(payload).toMatchObject({ image_urls: ["https://example.com/original.png"], mask_url: "https://example.com/mask.png", quality: "high" }); }); it("normalizes task ids, statuses, and result URLs", () => { const response = { data: { task_id: "task-1", status: "completed", results: [ "https://example.com/a.png", { image_url: "https://example.com/b.png" } ] } }; expect(getEvolinkTaskId(response)).toBe("task-1"); expect(mapEvolinkStatus(response)).toBe("succeeded"); expect(extractEvolinkResultUrls(response)).toEqual([ "https://example.com/a.png", "https://example.com/b.png" ]); }); });