mirror of
https://github.com/vector-im/element-call.git
synced 2026-02-26 05:17:04 +00:00
72 lines
1.8 KiB
TypeScript
72 lines
1.8 KiB
TypeScript
/*
|
|
Copyright 2024 New Vector Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE in the repository root for full details.
|
|
*/
|
|
|
|
import { expect, describe, it, vi, beforeAll } from "vitest";
|
|
import { render } from "@testing-library/react";
|
|
|
|
import { type MatrixInfo, VideoPreview } from "./VideoPreview";
|
|
import { type MuteStates } from "./MuteStates";
|
|
import { E2eeType } from "../e2ee/e2eeType";
|
|
|
|
function mockMuteStates({ audio = true, video = true } = {}): MuteStates {
|
|
return {
|
|
audio: { enabled: audio, setEnabled: vi.fn() },
|
|
video: { enabled: video, setEnabled: vi.fn() },
|
|
};
|
|
}
|
|
|
|
describe("VideoPreview", () => {
|
|
const matrixInfo: MatrixInfo = {
|
|
userId: "@a:example.org",
|
|
displayName: "Alice",
|
|
avatarUrl: "",
|
|
roomId: "",
|
|
roomName: "",
|
|
e2eeSystem: { kind: E2eeType.NONE },
|
|
roomAlias: null,
|
|
roomAvatar: null,
|
|
};
|
|
|
|
beforeAll(() => {
|
|
window.ResizeObserver = class ResizeObserver {
|
|
public observe(): void {
|
|
// do nothing
|
|
}
|
|
public unobserve(): void {
|
|
// do nothing
|
|
}
|
|
public disconnect(): void {
|
|
// do nothing
|
|
}
|
|
};
|
|
});
|
|
|
|
it("shows avatar with video disabled", () => {
|
|
const { queryByRole } = render(
|
|
<VideoPreview
|
|
matrixInfo={matrixInfo}
|
|
muteStates={mockMuteStates({ video: false })}
|
|
videoTrack={null}
|
|
children={<></>}
|
|
/>,
|
|
);
|
|
expect(queryByRole("img", { name: "@a:example.org" })).toBeVisible();
|
|
});
|
|
|
|
it("shows loading status with video enabled but no track", () => {
|
|
const { queryByRole } = render(
|
|
<VideoPreview
|
|
matrixInfo={matrixInfo}
|
|
muteStates={mockMuteStates({ video: true })}
|
|
videoTrack={null}
|
|
children={<></>}
|
|
/>,
|
|
);
|
|
expect(queryByRole("status")).toHaveTextContent("Video loading...");
|
|
});
|
|
});
|