文件
tennis-training-hub/client/src/lib/media.test.ts
2026-03-17 14:44:18 +08:00

30 行
1.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { formatRecordingTime, getMediaAssetUrl, pickBitrate } from "./media";
describe("media utilities", () => {
it("formats recording time with minute and second padding", () => {
expect(formatRecordingTime(0)).toBe("00:00");
expect(formatRecordingTime(61_000)).toBe("01:01");
expect(formatRecordingTime(12 * 60_000 + 9_000)).toBe("12:09");
});
it("selects bitrates by preset and device class", () => {
expect(pickBitrate("economy", true)).toBe(1_000_000);
expect(pickBitrate("clarity", false)).toBe(2_500_000);
expect(pickBitrate("balanced", true)).toBe(1_400_000);
expect(pickBitrate("balanced", false)).toBe(1_900_000);
});
it("keeps already-prefixed media asset paths stable", () => {
expect(getMediaAssetUrl("/media/assets/sessions/demo/preview.webm")).toBe(
"/media/assets/sessions/demo/preview.webm"
);
expect(getMediaAssetUrl("https://cdn.example.com/demo.webm")).toBe(
"https://cdn.example.com/demo.webm"
);
expect(getMediaAssetUrl("/assets/sessions/demo/preview.webm")).toBe(
"/media/assets/sessions/demo/preview.webm"
);
});
});