93 lines
2.3 KiB
TypeScript
93 lines
2.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
buildGraphSnapshot,
|
|
resolveRenderPreviewInputFromGraph,
|
|
} from "@/lib/canvas-render-preview";
|
|
|
|
describe("resolveRenderPreviewInputFromGraph", () => {
|
|
it("includes crop in collected pipeline steps", () => {
|
|
const graph = buildGraphSnapshot(
|
|
[
|
|
{
|
|
id: "image-1",
|
|
type: "image",
|
|
data: { url: "https://cdn.example.com/source.png" },
|
|
},
|
|
{
|
|
id: "crop-1",
|
|
type: "crop",
|
|
data: { cropRect: { x: 0.1, y: 0.2, width: 0.4, height: 0.3 } },
|
|
},
|
|
{
|
|
id: "render-1",
|
|
type: "render",
|
|
data: {},
|
|
},
|
|
],
|
|
[
|
|
{ source: "image-1", target: "crop-1" },
|
|
{ source: "crop-1", target: "render-1" },
|
|
],
|
|
);
|
|
|
|
const preview = resolveRenderPreviewInputFromGraph({
|
|
nodeId: "render-1",
|
|
graph,
|
|
});
|
|
|
|
expect(preview.steps).toEqual([
|
|
{
|
|
nodeId: "crop-1",
|
|
type: "crop",
|
|
params: { cropRect: { x: 0.1, y: 0.2, width: 0.4, height: 0.3 } },
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("derives proxied pexels video source URL from mp4Url", () => {
|
|
const mp4Url = "https://player.pexels.com/videos/example.mp4";
|
|
const graph = buildGraphSnapshot(
|
|
[
|
|
{
|
|
id: "video-1",
|
|
type: "video",
|
|
data: { mp4Url },
|
|
},
|
|
{
|
|
id: "render-1",
|
|
type: "render",
|
|
data: {},
|
|
},
|
|
],
|
|
[{ source: "video-1", target: "render-1" }],
|
|
);
|
|
|
|
const preview = resolveRenderPreviewInputFromGraph({ nodeId: "render-1", graph });
|
|
|
|
expect(preview.sourceUrl).toBe(`/api/pexels-video?u=${encodeURIComponent(mp4Url)}`);
|
|
});
|
|
|
|
it("uses ai-video data.url as source URL when available", () => {
|
|
const graph = buildGraphSnapshot(
|
|
[
|
|
{
|
|
id: "ai-video-1",
|
|
type: "ai-video",
|
|
data: { url: "https://cdn.example.com/generated-video.mp4" },
|
|
},
|
|
{
|
|
id: "render-1",
|
|
type: "render",
|
|
data: {},
|
|
},
|
|
],
|
|
[{ source: "ai-video-1", target: "render-1" }],
|
|
);
|
|
|
|
const preview = resolveRenderPreviewInputFromGraph({ nodeId: "render-1", graph });
|
|
|
|
expect(preview.sourceUrl).toBe("https://cdn.example.com/generated-video.mp4");
|
|
});
|
|
});
|