77 lines
2.3 KiB
TypeScript
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");
|
|
});
|
|
});
|