35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { create } from "@bufbuild/protobuf";
|
||
import { describe, expect, it } from "vitest";
|
||
import { AttachmentSchema, MediaMetadataSchema, VideoMetadataSchema } from "@/types/proto/api/v1/attachment_service_pb";
|
||
import { buildMediaMetadataDisplay, formatExposureTime, formatMediaDuration } from "@/utils/media-metadata";
|
||
|
||
describe("media metadata display formatting", () => {
|
||
it("uses conventional media duration and shutter-speed notation", () => {
|
||
expect(formatMediaDuration(65.4)).toBe("1:05");
|
||
expect(formatMediaDuration(3661)).toBe("1:01:01");
|
||
expect(formatExposureTime(1 / 120, "en")).toBe("1/120 s");
|
||
});
|
||
|
||
it("formats video metadata without requiring photo details", () => {
|
||
const attachment = create(AttachmentSchema, {
|
||
filename: "clip.mp4",
|
||
type: "video/mp4",
|
||
size: 1_048_576n,
|
||
mediaMetadata: create(MediaMetadataSchema, {
|
||
width: 1920,
|
||
height: 1080,
|
||
details: {
|
||
case: "video",
|
||
value: create(VideoMetadataSchema, { durationSeconds: 12.5 }),
|
||
},
|
||
}),
|
||
});
|
||
|
||
expect(buildMediaMetadataDisplay([attachment], "en")).toMatchObject({
|
||
file: "MP4 · 1.0 MB",
|
||
dimensions: "1920 × 1080 px",
|
||
duration: "0:13",
|
||
hasSavedMetadata: true,
|
||
});
|
||
});
|
||
});
|