set correct action for view device list button (#10979)

This commit is contained in:
Kerry 2023-05-26 10:44:40 +12:00 committed by GitHub
parent d0d9a36d07
commit e326526c10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 2 deletions

View file

@ -24,7 +24,6 @@ import defaultDispatcher from "../../../dispatcher/dispatcher";
import { Action } from "../../../dispatcher/actions";
import AccessibleButton from "../elements/AccessibleButton";
import { OpenToTabPayload } from "../../../dispatcher/payloads/OpenToTabPayload";
import { UserTab } from "../dialogs/UserTab";
import MatrixClientContext from "../../../contexts/MatrixClientContext";
import SetupEncryptionDialog from "../dialogs/security/SetupEncryptionDialog";
import { SetupEncryptionStore } from "../../../stores/SetupEncryptionStore";
@ -136,7 +135,7 @@ export const DecryptionFailureBar: React.FC<IProps> = ({ failures }) => {
};
const onDeviceListClick = (): void => {
const payload: OpenToTabPayload = { action: Action.ViewUserSettings, initialTabId: UserTab.Security };
const payload: OpenToTabPayload = { action: Action.ViewUserDeviceSettings };
defaultDispatcher.dispatch(payload);
};

View file

@ -20,6 +20,8 @@ import "@testing-library/jest-dom";
import MatrixClientContext from "../../../../src/contexts/MatrixClientContext";
import { DecryptionFailureBar } from "../../../../src/components/views/rooms/DecryptionFailureBar";
import defaultDispatcher from "../../../../src/dispatcher/dispatcher";
import { Action } from "../../../../src/dispatcher/actions";
type MockDevice = { deviceId: string };
@ -71,6 +73,7 @@ function getBar(wrapper: RenderResult) {
describe("<DecryptionFailureBar />", () => {
beforeEach(() => {
jest.useFakeTimers();
jest.spyOn(defaultDispatcher, "dispatch").mockRestore();
});
afterEach(() => {
@ -285,6 +288,41 @@ describe("<DecryptionFailureBar />", () => {
bar.unmount();
});
it("Displays button to review device list if we are verified", async () => {
// stub so we dont have to deal with launching modals
jest.spyOn(defaultDispatcher, "dispatch").mockImplementation(() => {});
ourDevice = verifiedDevice1;
allDevices = [verifiedDevice1, verifiedDevice2];
const bar = render(
// @ts-ignore
<MatrixClientContext.Provider value={mockClient}>
<DecryptionFailureBar
failures={[
// @ts-ignore
mockEvent1,
// @ts-ignore
mockEvent2,
// @ts-ignore
mockEvent3,
]}
/>
,
</MatrixClientContext.Provider>,
);
await waitFor(() => expect(mockClient.isSecretStored).toHaveBeenCalled());
act(() => {
jest.advanceTimersByTime(5000);
});
fireEvent.click(screen.getByText("View your device list"));
expect(defaultDispatcher.dispatch).toHaveBeenCalledWith({ action: Action.ViewUserDeviceSettings });
bar.unmount();
});
it("Does not display a button to send key requests if we are unverified", async () => {
ourDevice = unverifiedDevice1;