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

38 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
VIDEO_DURATION_AUTO,
VIDEO_DURATION_DEFAULT,
VIDEO_DURATION_MAX,
VIDEO_DURATION_MIN,
clampVideoDuration,
normalizeVideoDuration,
normalizeVideoRatio,
normalizeVideoResolution
} from "@/lib/video-settings";
describe("video settings", () => {
it("clamps duration to the supported range", () => {
expect(clampVideoDuration(2)).toBe(VIDEO_DURATION_MIN);
expect(clampVideoDuration(999)).toBe(VIDEO_DURATION_MAX);
expect(clampVideoDuration(12.6)).toBe(13);
});
it("supports Seedance auto duration only when allowed", () => {
expect(normalizeVideoDuration(VIDEO_DURATION_AUTO)).toBe(VIDEO_DURATION_AUTO);
expect(clampVideoDuration(VIDEO_DURATION_AUTO, VIDEO_DURATION_DEFAULT, { allowAuto: false })).toBe(VIDEO_DURATION_MIN);
});
it("keeps empty duration optional and falls back for invalid values", () => {
expect(normalizeVideoDuration(undefined)).toBeUndefined();
expect(normalizeVideoDuration("")).toBeUndefined();
expect(clampVideoDuration("not-a-number")).toBe(VIDEO_DURATION_DEFAULT);
});
it("normalizes ratio and resolution to Seedance 2.0 supported values", () => {
expect(normalizeVideoRatio("21:9")).toBe("21:9");
expect(normalizeVideoRatio("bad-ratio")).toBe("9:16");
expect(normalizeVideoResolution("1080p", "doubao-seedance-2-0-260128")).toBe("1080p");
expect(normalizeVideoResolution("1080p", "doubao-seedance-2-0-fast-260128")).toBe("720p");
});
});