Files
Michael TelatynskiandGitHub bbec915fb0 Enable more oxlint rules (#34189)
* Fix type imports

* Fix jsdoc

* Fixup types

* Fix stray awaits on non-thenables

* Fixup imports

* Fix splats

* Fix this-context on callbacks

* Memoise react contexts

* Prefer find/flatMap

* Make oxlint happier about our React keys

* Avoid unsafe default function params

* Fixup jsdoc

* Fixup contexts

* Switch from eslint to oxlint

* Some oxlint-related tweaks

* Iterate

* Partial revert to defer some changes and shrink diff

* Iterate

* Add eslint-plugin-element-call and enable the copyright rule

* Set strictStorePkgContentCheck

* Iterate

* Enable forwardRef oxlint rule

* Enable no-unused-vars oxlint rule

* Enable no-implied-eval oxlint rule

* Enable no-duplicate-type-constituents oxlint rule

* Enable explicit-length-check oxlint rule

* Enable prefer-number-properties oxlint rule

* Enable no-callback-in-promise oxlint rule

* Enable no-require-imports oxlint rule

* Remove disablement of most unicorn oxlint rules

* Enable no-conditional-tests oxlint rule

* Enable promise-valid-params oxlint rule

* Enable require-unicode-regexp oxlint rule

* Remove max-len comments as we use oxfmt for formatting

* Enable majority of oxlint `suspicious` rules

* Iterate

* Fix oxlint type-aware lint running without dependencies built
2026-07-29 08:26:07 +00:00

86 lines
2.7 KiB
TypeScript

/*
Copyright 2024 New Vector Ltd.
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
Please see LICENSE files in the repository root for full details.
*/
import { getByText, render, type RenderResult } from "jest-matrix-react";
import userEvent from "@testing-library/user-event";
import React from "react";
import AskInviteAnywayDialog, {
type AskInviteAnywayDialogProps,
} from "../../../../../src/components/views/dialogs/AskInviteAnywayDialog";
import SettingsStore from "../../../../../src/settings/SettingsStore";
describe("AskInviteaAnywayDialog", () => {
const onFinished = jest.fn();
const onGiveUp = jest.fn();
const onInviteAnyways = jest.fn();
function renderComponent(props: Partial<AskInviteAnywayDialogProps> = {}): RenderResult {
return render(
<AskInviteAnywayDialog
onFinished={onFinished}
onGiveUp={onGiveUp}
onInviteAnyways={onInviteAnyways}
unknownProfileUsers={[
{
userId: "@alice:localhost",
errorText: "🤷‍♂️",
},
]}
{...props}
/>,
);
}
beforeEach(() => {
jest.resetAllMocks();
});
it("remembers to not warn again", async () => {
const { container } = renderComponent();
jest.spyOn(SettingsStore, "setValue").mockImplementation(async (): Promise<void> => {});
const neverWarnAgainBtn = getByText(container, /never warn/);
await userEvent.click(neverWarnAgainBtn);
expect(SettingsStore.setValue).toHaveBeenCalledWith(
"promptBeforeInviteUnknownUsers",
null,
expect.any(String),
false,
);
expect(onInviteAnyways).toHaveBeenCalledTimes(1);
expect(onFinished).toHaveBeenCalledWith(true);
});
it("invites anyway", async () => {
const { container } = renderComponent();
jest.spyOn(SettingsStore, "setValue");
const inviteAnywayBtn = getByText(container, "Invite anyway");
await userEvent.click(inviteAnywayBtn);
expect(onInviteAnyways).toHaveBeenCalledTimes(1);
expect(onFinished).toHaveBeenCalledWith(true);
});
it("gives up", async () => {
const { container } = renderComponent();
jest.spyOn(SettingsStore, "setValue");
const closeBtn = getByText(container, /Close/);
await userEvent.click(closeBtn);
expect(onGiveUp).toHaveBeenCalledTimes(1);
expect(onFinished).toHaveBeenCalledWith(false);
});
});