Files
element-web/test/unit-tests/components/views/dialogs/DevtoolsDialog-test.tsx
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

79 lines
2.8 KiB
TypeScript
Raw Normal View History

2023-01-30 17:01:54 +00:00
/*
2024-09-09 14:57:16 +01:00
Copyright 2024 New Vector Ltd.
2023-01-30 17:01:54 +00:00
Copyright 2023 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
2024-09-09 14:57:16 +01:00
Please see LICENSE files in the repository root for full details.
2023-01-30 17:01:54 +00:00
*/
import React from "react";
import { getByLabelText, getAllByLabelText, render } from "jest-matrix-react";
import { Room, MatrixClient } from "matrix-js-sdk/src/matrix";
2023-01-30 17:01:54 +00:00
import userEvent from "@testing-library/user-event";
2024-10-15 14:57:26 +01:00
import { stubClient } from "../../../../test-utils";
import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg";
import MatrixClientContext from "../../../../../src/contexts/MatrixClientContext";
import DevtoolsDialog from "../../../../../src/components/views/dialogs/DevtoolsDialog";
2023-01-30 17:01:54 +00:00
describe("DevtoolsDialog", () => {
let cli: MatrixClient;
let room: Room;
function getComponent(roomId: string, threadRootId: string | null = null, onFinished = () => true) {
2023-01-30 17:01:54 +00:00
return render(
<MatrixClientContext.Provider value={cli}>
<DevtoolsDialog roomId={roomId} threadRootId={threadRootId} onFinished={onFinished} />
2023-01-30 17:01:54 +00:00
</MatrixClientContext.Provider>,
);
}
beforeEach(() => {
stubClient();
cli = MatrixClientPeg.safeGet();
2023-01-30 17:01:54 +00:00
room = new Room("!id", cli, "@alice:matrix.org");
jest.spyOn(cli, "getRoom").mockReturnValue(room);
});
afterAll(() => {
jest.restoreAllMocks();
});
it("renders the devtools dialog", () => {
const { asFragment } = getComponent(room.roomId);
expect(asFragment()).toMatchSnapshot();
});
it("copies the roomid", async () => {
const user = userEvent.setup();
jest.spyOn(navigator.clipboard, "writeText");
const { container } = getComponent(room.roomId);
const copyBtn = getByLabelText(container, "Copy");
await user.click(copyBtn);
const copiedBtn = getByLabelText(container, "Copied!");
expect(copiedBtn).toBeInTheDocument();
expect(navigator.clipboard.writeText).toHaveBeenCalled();
2023-07-13 16:19:44 +01:00
await expect(navigator.clipboard.readText()).resolves.toBe(room.roomId);
2023-01-30 17:01:54 +00:00
});
it("copies the thread root id when provided", async () => {
const user = userEvent.setup();
jest.spyOn(navigator.clipboard, "writeText");
const threadRootId = "$test_event_id_goes_here";
const { container } = getComponent(room.roomId, threadRootId);
const copyBtn = getAllByLabelText(container, "Copy")[1];
await user.click(copyBtn);
const copiedBtn = getByLabelText(container, "Copied!");
expect(copiedBtn).toBeInTheDocument();
expect(navigator.clipboard.writeText).toHaveBeenCalled();
2023-07-13 16:19:44 +01:00
await expect(navigator.clipboard.readText()).resolves.toBe(threadRootId);
});
2023-01-30 17:01:54 +00:00
});