import { describe, expect, it } from "vitest"; import { buildJimengPayload, buildJimengQueryPayload, getJimengCapabilities, getVisibleImageCapabilities } from "@/lib/jimeng/capabilities"; describe("Jimeng capability matrix", () => { it("only exposes the three supported image capabilities", () => { const capabilities = getJimengCapabilities(); expect(Object.keys(capabilities)).toEqual([ "image.generate", "image.inpaint", "image.upscale" ]); expect(getVisibleImageCapabilities().map((capability) => capability.id)).toEqual([ "image.generate", "image.inpaint", "image.upscale" ]); }); it("builds payloads for image generation 4.6", () => { const payload = buildJimengPayload("image.generate", "jimeng_seedream46_cvtob", { prompt: "商品海报", imageUrls: ["https://example.com/ref.png"], width: 2048, height: 2048, force_single: true, scale: 50 }); expect(payload).toMatchObject({ req_key: "jimeng_seedream46_cvtob", prompt: "商品海报", image_urls: ["https://example.com/ref.png"], width: 2048, height: 2048, force_single: true, scale: 50 }); }); it("requires original and mask URLs for inpainting", () => { expect(() => buildJimengPayload("image.inpaint", "jimeng_image2image_dream_inpaint", { imageUrls: ["https://example.com/original.png"] }) ).toThrow(/exactly two/); }); it("uses return_url query payload for polling", () => { const payload = buildJimengQueryPayload("jimeng_i2i_seed3_tilesr_cvtob", "task-1"); expect(payload.req_key).toBe("jimeng_i2i_seed3_tilesr_cvtob"); expect(payload.task_id).toBe("task-1"); expect(String(payload.req_json)).toContain('"return_url":true'); }); });