Files
NianAIGC/tests/jimeng-capabilities.test.ts
2026-05-29 10:26:02 +08:00

59 lines
1.8 KiB
TypeScript

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');
});
});