From e70afdb04f717973e7ccc868ead3255bd400e44c Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 6 Feb 2025 15:16:03 +0100 Subject: [PATCH] Test updating --- .../tabs/user/EncryptionUserSettingsTab.tsx | 1 + .../user/EncryptionUserSettingsTab-test.tsx | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx b/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx index af8bcf0477..47f001b12a 100644 --- a/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx @@ -82,6 +82,7 @@ const useKeyBackupIsEnabled = (): boolean | undefined => { useEventEmitter(matrixClient, ClientEvent.AccountData, (event: MatrixEvent): void => { const type = event.getType(); + // Recheck the status if this account data has been updated as this implies it has changed if (type === "m.org.matrix.custom.backup_disabled") { checkStatus(); } diff --git a/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx b/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx index abb3fc3467..bd1dce4e04 100644 --- a/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx +++ b/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx @@ -6,10 +6,11 @@ */ import React from "react"; -import { render, screen } from "jest-matrix-react"; +import { act, render, screen } from "jest-matrix-react"; import { type MatrixClient } from "matrix-js-sdk/src/matrix"; import { waitFor } from "@testing-library/dom"; import userEvent from "@testing-library/user-event"; +import { ClientEvent, MatrixEvent } from "matrix-js-sdk/src/matrix"; import type { KeyBackupInfo } from "matrix-js-sdk/src/crypto-api"; import { @@ -170,4 +171,25 @@ describe("", () => { }), ).toBeVisible(); }); + + it("should update when backup_disabled account data is changed", async () => { + jest.spyOn(matrixClient.getCrypto()!, "getKeyBackupInfo").mockResolvedValue({ + version: "1", + } as KeyBackupInfo); + + renderComponent(); + + await expect(await screen.findByRole("heading", { name: "Recovery" })).toBeVisible(); + + jest.spyOn(matrixClient.getCrypto()!, "getKeyBackupInfo").mockResolvedValue(null); + + act(() => { + const accountDataEvent = new MatrixEvent({ type: "m.org.matrix.custom.backup_disabled" }); + matrixClient.emit(ClientEvent.AccountData, accountDataEvent); + }); + + await waitFor(() => { + expect(screen.queryByRole("heading", { name: "Recovery" })).toBeNull(); + }); + }); });