mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
Une case sur les écrans de création (bureau, mobile) et de programmation d'un Reel double la publication d'une story vidéo sur les pages Facebook sélectionnées. TikTok n'ayant pas de stories, l'option ne le concerne pas. - Publication immédiate : la story part juste après le Reel, à partir de la vidéo rendue envoyée en binaire (nouvelle publishVideoStoryFromBuffer). Un échec de la story est noté dans l'historique sans faire échouer le Reel. - Publication programmée : une entrée « story » est planifiée à côté du Reel ; le planificateur la publie comme les autres stories. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPMYHUDaZyrG3xRCM5iGVr
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { 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, alsoStory: false });
|
|
});
|
|
|
|
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("ttsPreviewSchema", () => {
|
|
it("refuse un texte vide", () => {
|
|
expect(ttsPreviewSchema.safeParse({ text: " " }).success).toBe(false);
|
|
});
|
|
});
|