Files

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

77 lines
2.6 KiB
TypeScript
Raw Permalink 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 { render, screen } from "jest-matrix-react";
2025-02-05 13:25:06 +00:00
import { Room, type 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");
getComponent(room.roomId);
2023-01-30 17:01:54 +00:00
const copyBtn = screen.getByLabelText("Copy");
2023-01-30 17:01:54 +00:00
await user.click(copyBtn);
const copiedBtn = screen.getByLabelText("Copied!");
2023-01-30 17:01:54 +00:00
expect(copiedBtn).toBeInTheDocument();
expect(navigator.clipboard.writeText).toHaveBeenCalledWith(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";
getComponent(room.roomId, threadRootId);
const copyBtn = screen.getAllByLabelText("Copy")[1];
await user.click(copyBtn);
const copiedBtn = screen.getByLabelText("Copied!");
expect(copiedBtn).toBeInTheDocument();
expect(navigator.clipboard.writeText).toHaveBeenCalledWith(threadRootId);
});
2023-01-30 17:01:54 +00:00
});