61 lines
1.3 KiB
TypeScript
61 lines
1.3 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { parseGenerateRequest } from "../lib/request-schema";
|
|
|
|
test("parseGenerateRequest returns normalized payload", () => {
|
|
const payload = parseGenerateRequest(
|
|
{
|
|
prompt: "A premium product poster",
|
|
size: "1536x1024",
|
|
quality: "high",
|
|
outputFormat: "png",
|
|
background: "auto",
|
|
count: 2,
|
|
moderation: "auto",
|
|
user: "browser-demo-session-id",
|
|
},
|
|
"gpt-image-2",
|
|
);
|
|
|
|
assert.deepEqual(payload, {
|
|
model: "gpt-image-2",
|
|
prompt: "A premium product poster",
|
|
size: "1536x1024",
|
|
quality: "high",
|
|
n: 2,
|
|
moderation: "auto",
|
|
output_format: "png",
|
|
background: "auto",
|
|
user: "browser-demo-session-id",
|
|
});
|
|
});
|
|
|
|
test("parseGenerateRequest rejects transparent jpeg output", () => {
|
|
assert.throws(
|
|
() =>
|
|
parseGenerateRequest(
|
|
{
|
|
prompt: "A cutout product shot",
|
|
outputFormat: "jpeg",
|
|
background: "transparent",
|
|
},
|
|
"gpt-image-2",
|
|
),
|
|
/JPEG 不支持透明背景/,
|
|
);
|
|
});
|
|
|
|
test("parseGenerateRequest rejects oversized count", () => {
|
|
assert.throws(
|
|
() =>
|
|
parseGenerateRequest(
|
|
{
|
|
prompt: "too many",
|
|
count: 5,
|
|
},
|
|
"gpt-image-2",
|
|
),
|
|
/最多生成 4 张图片/,
|
|
);
|
|
});
|