mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
Le petit logo affiché pendant la vidéo devient optionnel (activé par défaut), sur les 4 pages Reel (vidéo et images, bureau et mobile) ainsi que dans l'aperçu. Le grand logo de l'effet de fin reste piloté par son propre interrupteur. Pris en charge par le rendu Remotion et par le rendu FFmpeg de secours (show_watermark). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Ze4bs7tpF1KGWUk6ZZSZ4
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { imagesReelParamsSchema, ttsPreviewSchema, videoReelParamsSchema } from "./reel";
|
|
|
|
describe("videoReelParamsSchema", () => {
|
|
it("exige une vidéo et une page, avec des messages lisibles", () => {
|
|
const result = videoReelParamsSchema.safeParse({ pageIds: [] });
|
|
expect(result.success).toBe(false);
|
|
expect(result.error?.issues.map((i) => i.message)).toContain("Vidéo requise");
|
|
});
|
|
|
|
it("applique les valeurs par défaut", () => {
|
|
const params = videoReelParamsSchema.parse({ videoMediaId: "v", pageIds: ["p"] });
|
|
expect(params).toMatchObject({ captionStyle: "bold", stabilize: false, drawText: true, musicVolume: 0.25, showLogo: true });
|
|
});
|
|
|
|
it("accepte les anciens paramètres encore stockés dans des jobs", () => {
|
|
expect(videoReelParamsSchema.safeParse({ videoMediaId: "v", pageIds: ["p"], wordDuration: 0.6 }).success).toBe(true);
|
|
});
|
|
|
|
it("refuse un moteur de voix inconnu", () => {
|
|
expect(videoReelParamsSchema.safeParse({ videoMediaId: "v", pageIds: ["p"], ttsEngine: "autre" }).success).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("imagesReelParamsSchema", () => {
|
|
it("limite à 4 images", () => {
|
|
expect(imagesReelParamsSchema.safeParse({ imageUrls: ["a", "b", "c", "d", "e"] }).success).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("ttsPreviewSchema", () => {
|
|
it("refuse un texte vide", () => {
|
|
expect(ttsPreviewSchema.safeParse({ text: " " }).success).toBe(false);
|
|
});
|
|
});
|