Files
lemonspace_app/components/media/__tests__/media-preview-utils.test.ts

77 lines
2.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
collectMediaStorageIdsForResolution,
resolveMediaPreviewUrl,
} from "@/components/media/media-preview-utils";
describe("media-preview-utils", () => {
it("collects preview ids first and includes original ids as fallback", () => {
const ids = collectMediaStorageIdsForResolution([
{ storageId: "orig-1", previewStorageId: "preview-1" },
{ storageId: "orig-2" },
]);
expect(ids).toEqual(["preview-1", "orig-1", "orig-2"]);
});
it("collects only available storage ids for mixed archive items", () => {
const ids = collectMediaStorageIdsForResolution([
{ previewUrl: "https://cdn.example.com/preview-only.jpg" },
{ previewStorageId: "preview-2" },
{ storageId: "orig-2" },
]);
expect(ids).toEqual(["preview-2", "orig-2"]);
});
it("resolves preview url first and falls back to original url", () => {
const previewFirst = resolveMediaPreviewUrl(
{ storageId: "orig-1", previewStorageId: "preview-1" },
{
"preview-1": "https://cdn.example.com/preview.webp",
"orig-1": "https://cdn.example.com/original.jpg",
},
);
expect(previewFirst).toBe("https://cdn.example.com/preview.webp");
const fallbackToOriginal = resolveMediaPreviewUrl(
{ storageId: "orig-1", previewStorageId: "preview-1" },
{
"orig-1": "https://cdn.example.com/original.jpg",
},
);
expect(fallbackToOriginal).toBe("https://cdn.example.com/original.jpg");
});
it("resolves direct remote preview URLs before storage map", () => {
const directPreview = resolveMediaPreviewUrl(
{
previewUrl: "https://cdn.example.com/direct-preview.webp",
storageId: "orig-1",
previewStorageId: "preview-1",
},
{
"preview-1": "https://cdn.example.com/preview.webp",
"orig-1": "https://cdn.example.com/original.jpg",
},
);
expect(directPreview).toBe("https://cdn.example.com/direct-preview.webp");
});
it("falls back to direct remote original URLs when storage ids are missing", () => {
const previewUrl = resolveMediaPreviewUrl(
{
kind: "video",
originalUrl: "https://cdn.example.com/video.mp4",
},
{},
);
expect(previewUrl).toBe("https://cdn.example.com/video.mp4");
});
});