Files
NianAIGC/tests/evolink-image-client.test.ts
2026-05-29 14:32:02 +08:00

72 lines
1.9 KiB
TypeScript

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"
]);
});
});