30 行
1.1 KiB
TypeScript
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"
|
|
);
|
|
});
|
|
});
|