From 3fbe2a5dfec8279db836a0f1d015948dfcf50500 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Tue, 3 Dec 2024 15:10:28 +0100 Subject: [PATCH] Add tests --- .../dialogs/UntrustedDeviceDialog-test.tsx | 59 +++++++ .../UntrustedDeviceDialog-test.tsx.snap | 149 ++++++++++++++++++ 2 files changed, 208 insertions(+) create mode 100644 test/unit-tests/components/views/dialogs/UntrustedDeviceDialog-test.tsx create mode 100644 test/unit-tests/components/views/dialogs/__snapshots__/UntrustedDeviceDialog-test.tsx.snap diff --git a/test/unit-tests/components/views/dialogs/UntrustedDeviceDialog-test.tsx b/test/unit-tests/components/views/dialogs/UntrustedDeviceDialog-test.tsx new file mode 100644 index 00000000000..3bfafa394bf --- /dev/null +++ b/test/unit-tests/components/views/dialogs/UntrustedDeviceDialog-test.tsx @@ -0,0 +1,59 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only + * Please see LICENSE files in the repository root for full details. + */ + +import React from "react"; +import { Device, MatrixClient, User } from "matrix-js-sdk/src/matrix"; +import { render, screen } from "jest-matrix-react"; + +import { stubClient } from "../../../../test-utils"; +import UntrustedDeviceDialog from "../../../../../src/components/views/dialogs/UntrustedDeviceDialog.tsx"; + +describe("", () => { + let client: MatrixClient; + let user: User; + let device: Device; + const onFinished = jest.fn(); + + beforeEach(() => { + client = stubClient(); + user = User.createUser("@alice:example.org", client); + user.setDisplayName("Alice"); + device = new Device({ deviceId: "device_id", userId: user.userId, algorithms: [], keys: new Map() }); + }); + + afterEach(() => { + onFinished.mockReset(); + }); + + function renderComponent() { + return render(); + } + + it("should display the dialog for the device of another user", () => { + const { asFragment } = renderComponent(); + expect(asFragment()).toMatchSnapshot(); + }); + + it("should display the dialog for the device of the current user", () => { + jest.spyOn(client, "getUserId").mockReturnValue(user.userId); + + const { asFragment } = renderComponent(); + expect(asFragment()).toMatchSnapshot(); + }); + + it("should call onFinished without parameter when Done is clicked", () => { + renderComponent(); + screen.getByRole("button", { name: "Done" }).click(); + expect(onFinished).toHaveBeenCalledWith(); + }); + + it("should call onFinished with sas when Interactively verify by emoji is clicked", () => { + renderComponent(); + screen.getByRole("button", { name: "Interactively verify by emoji" }).click(); + expect(onFinished).toHaveBeenCalledWith("sas"); + }); +}); diff --git a/test/unit-tests/components/views/dialogs/__snapshots__/UntrustedDeviceDialog-test.tsx.snap b/test/unit-tests/components/views/dialogs/__snapshots__/UntrustedDeviceDialog-test.tsx.snap new file mode 100644 index 00000000000..2fd5fdd249d --- /dev/null +++ b/test/unit-tests/components/views/dialogs/__snapshots__/UntrustedDeviceDialog-test.tsx.snap @@ -0,0 +1,149 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` should display the dialog for the device of another user 1`] = ` + +
+