rx-player
Version:
Canal+ HTML5 Video Player
109 lines (91 loc) • 3.66 kB
text/typescript
import { describe, it, expect, vi, afterEach } from "vitest";
import globalScope from "../../../../../utils/global_scope";
import type IProbeMediaDisplayInfos from "../../probers/mediaDisplayInfos";
const origMatchMedia = globalScope.matchMedia;
describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
afterEach(() => {
globalScope.matchMedia = origMatchMedia;
});
it("should throw if matchMedia is undefined", async () => {
(
globalScope as { matchMedia: typeof globalScope.matchMedia | undefined }
).matchMedia = undefined;
const probeMediaDisplayInfos = (
await vi.importActual("../../probers/mediaDisplayInfos")
).default as typeof IProbeMediaDisplayInfos;
expect(() => probeMediaDisplayInfos({})).toThrowError("matchMedia API not available");
});
it("should throw if no colorSpace in display configuration", async () => {
const mockMatchMedia = vi.fn(() => true);
globalScope.matchMedia = mockMatchMedia as unknown as typeof globalScope.matchMedia;
const config = {
display: {},
};
const probeMediaDisplayInfos = (
await vi.importActual("../../probers/mediaDisplayInfos")
).default as typeof IProbeMediaDisplayInfos;
expect(() => probeMediaDisplayInfos(config)).toThrowError(
"Not enough arguments for calling matchMedia.",
);
});
it("should throw if no display in configuration", async () => {
const mockMatchMedia = vi.fn(() => true);
globalScope.matchMedia = mockMatchMedia as unknown as typeof globalScope.matchMedia;
const config = {};
const probeMediaDisplayInfos = (
await vi.importActual("../../probers/mediaDisplayInfos")
).default as typeof IProbeMediaDisplayInfos;
expect(() => probeMediaDisplayInfos(config)).toThrowError(
"Not enough arguments for calling matchMedia.",
);
});
it("should throw if mediaMatch called with bad arguments", async () => {
const mockMatchMedia = vi.fn(() => ({
media: "not all",
}));
globalScope.matchMedia = mockMatchMedia as unknown as typeof globalScope.matchMedia;
const config = {
display: {
colorSpace: "srgb",
},
};
const probeMediaDisplayInfos = (
await vi.importActual("../../probers/mediaDisplayInfos")
).default as typeof IProbeMediaDisplayInfos;
expect(() => probeMediaDisplayInfos(config)).toThrowError(
"Bad arguments for calling matchMedia.",
);
});
it("should return `Supported` if color space is supported", async () => {
const mockMatchMedia = vi.fn(() => ({
matches: true,
}));
globalScope.matchMedia = mockMatchMedia as unknown as typeof globalScope.matchMedia;
const config = {
display: {
colorSpace: "srgb",
},
};
const probeMediaDisplayInfos = (
await vi.importActual("../../probers/mediaDisplayInfos")
).default as typeof IProbeMediaDisplayInfos;
expect(probeMediaDisplayInfos(config)).toEqual("Supported");
expect(mockMatchMedia).toHaveBeenCalledTimes(1);
});
it("should return `NotSupported` if color space is not supported", async () => {
const mockMatchMedia = vi.fn(() => ({
matches: false,
}));
globalScope.matchMedia = mockMatchMedia as unknown as typeof globalScope.matchMedia;
const config = {
display: {
colorSpace: "p5",
},
};
const probeMediaDisplayInfos = (
await vi.importActual("../../probers/mediaDisplayInfos")
).default as typeof IProbeMediaDisplayInfos;
expect(probeMediaDisplayInfos(config)).toEqual("NotSupported");
expect(mockMatchMedia).toHaveBeenCalledTimes(1);
});
});