1
0
mirror of https://github.com/matrix-org/matrix-react-sdk.git synced 2025-08-06 10:22:45 +03:00

Add MatrixClientPeg::safeGet and use it in tests (#10985)

This commit is contained in:
Michael Telatynski
2023-06-05 18:12:23 +01:00
committed by GitHub
parent c47b587225
commit 6b46d6e4f8
88 changed files with 290 additions and 226 deletions

View File

@@ -47,7 +47,7 @@ describe("MemberAvatar", () => {
jest.clearAllMocks();
stubClient();
mockClient = mocked(MatrixClientPeg.get());
mockClient = mocked(MatrixClientPeg.safeGet());
room = new Room(ROOM_ID, mockClient, mockClient.getUserId() ?? "", {
pendingEventOrdering: PendingEventOrdering.Detached,

View File

@@ -41,7 +41,7 @@ describe("<RoomCallBanner />", () => {
beforeEach(() => {
stubClient();
client = mocked(MatrixClientPeg.get());
client = mocked(MatrixClientPeg.safeGet());
room = new Room("!1:example.org", client, "@alice:example.org", {
pendingEventOrdering: PendingEventOrdering.Detached,

View File

@@ -159,7 +159,7 @@ describe("MessageContextMenu", () => {
room_id: roomId,
});
pinnableEvent.event.event_id = "!3";
const client = MatrixClientPeg.get();
const client = MatrixClientPeg.safeGet();
const room = makeDefaultRoom();
// mock permission to allow adding pinned messages to room
@@ -204,7 +204,7 @@ describe("MessageContextMenu", () => {
room_id: roomId,
});
pinnableEvent.event.event_id = "!3";
const client = MatrixClientPeg.get();
const client = MatrixClientPeg.safeGet();
const room = makeDefaultRoom();
// make the event already pinned in the room
@@ -543,7 +543,7 @@ function createMenuWithContent(
}
function makeDefaultRoom(): Room {
return new Room(roomId, MatrixClientPeg.get(), "@user:example.com", {
return new Room(roomId, MatrixClientPeg.safeGet(), "@user:example.com", {
pendingEventOrdering: PendingEventOrdering.Detached,
});
}
@@ -555,7 +555,7 @@ function createMenu(
beacons: Map<BeaconIdentifier, Beacon> = new Map(),
room: Room = makeDefaultRoom(),
): RenderResult {
const client = MatrixClientPeg.get();
const client = MatrixClientPeg.safeGet();
// @ts-ignore illegally set private prop
room.currentState.beacons = beacons;

View File

@@ -46,7 +46,7 @@ describe("RoomContextMenu", () => {
jest.clearAllMocks();
stubClient();
mockClient = mocked(MatrixClientPeg.get());
mockClient = mocked(MatrixClientPeg.safeGet());
room = new Room(ROOM_ID, mockClient, mockClient.getUserId() ?? "", {
pendingEventOrdering: PendingEventOrdering.Detached,

View File

@@ -71,7 +71,7 @@ describe("RoomGeneralContextMenu", () => {
jest.clearAllMocks();
stubClient();
mockClient = mocked(MatrixClientPeg.get());
mockClient = mocked(MatrixClientPeg.safeGet());
room = new Room(ROOM_ID, mockClient, mockClient.getUserId() ?? "", {
pendingEventOrdering: PendingEventOrdering.Detached,

View File

@@ -45,7 +45,7 @@ describe("ThreadListContextMenu", () => {
jest.clearAllMocks();
stubClient();
mockClient = mocked(MatrixClientPeg.get());
mockClient = mocked(MatrixClientPeg.safeGet());
room = new Room(ROOM_ID, mockClient, mockClient.getUserId() ?? "", {
pendingEventOrdering: PendingEventOrdering.Detached,

View File

@@ -39,7 +39,7 @@ describe("DevtoolsDialog", () => {
beforeEach(() => {
stubClient();
cli = MatrixClientPeg.get();
cli = MatrixClientPeg.safeGet();
room = new Room("!id", cli, "@alice:matrix.org");
jest.spyOn(cli, "getRoom").mockReturnValue(room);

View File

@@ -70,7 +70,7 @@ function mockClient({
users = [],
}: MockClientOptions = {}): MatrixClient {
stubClient();
const cli = MatrixClientPeg.get();
const cli = MatrixClientPeg.safeGet();
MatrixClientPeg.getHomeserverName = jest.fn(() => homeserver);
cli.getUserId = jest.fn(() => userId);
cli.getHomeserverUrl = jest.fn(() => homeserver);

View File

@@ -31,7 +31,7 @@ describe("<RoomNotifications />", () => {
});
it("should render", () => {
const cli = MatrixClientPeg.get();
const cli = MatrixClientPeg.safeGet();
const { asFragment } = render(
<MatrixClientContext.Provider value={cli}>
<DevtoolsContext.Provider

View File

@@ -82,7 +82,7 @@ describe("AppTile", () => {
beforeAll(async () => {
stubClient();
cli = MatrixClientPeg.get();
cli = MatrixClientPeg.safeGet();
cli.hasLazyLoadMembersEnabled = () => false;
// Init misc. startup deps

View File

@@ -274,7 +274,7 @@ describe("PollCreateDialog", () => {
});
function createRoom(): Room {
return new Room("roomid", MatrixClientPeg.get(), "@name:example.com", {});
return new Room("roomid", MatrixClientPeg.safeGet(), "@name:example.com", {});
}
function changeValue(wrapper: RenderResult, labelText: string, value: string) {

View File

@@ -58,7 +58,7 @@ describe("CallEvent", () => {
jest.setSystemTime(0);
stubClient();
client = mocked(MatrixClientPeg.get());
client = mocked(MatrixClientPeg.safeGet());
client.getUserId.mockReturnValue("@alice:example.org");
room = new Room("!1:example.org", client, "@alice:example.org", {

View File

@@ -38,7 +38,7 @@ describe("<RoomPredecessorTile />", () => {
const userId = "@alice:server.org";
const roomId = "!room:server.org";
stubClient();
const client = mocked(MatrixClientPeg.get());
const client = mocked(MatrixClientPeg.safeGet());
function makeRoom({
createEventHasPredecessor = false,
@@ -165,7 +165,7 @@ describe("<RoomPredecessorTile />", () => {
filterConsole("Failed to find predecessor room with id old_room_id");
beforeEach(() => {
mocked(MatrixClientPeg.get().getRoom).mockReturnValue(null);
mocked(MatrixClientPeg.safeGet().getRoom).mockReturnValue(null);
});
it("Shows an error if there are no via servers", () => {
@@ -219,7 +219,7 @@ describe("<RoomPredecessorTile />", () => {
filterConsole("Failed to find predecessor room with id old_room_id");
beforeEach(() => {
mocked(MatrixClientPeg.get().getRoom).mockReturnValue(null);
mocked(MatrixClientPeg.safeGet().getRoom).mockReturnValue(null);
});
it("Shows an error if there are no via servers", () => {

View File

@@ -34,7 +34,7 @@ import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalink
describe("<PinnedMessagesCard />", () => {
stubClient();
const cli = mocked(MatrixClientPeg.get());
const cli = mocked(MatrixClientPeg.safeGet());
cli.getUserId.mockReturnValue("@alice:example.org");
cli.setRoomAccountData.mockResolvedValue({});
cli.relations.mockResolvedValue({ originalEvent: {} as unknown as MatrixEvent, events: [] });

View File

@@ -35,7 +35,7 @@ describe("RoomHeaderButtons-test.tsx", function () {
jest.clearAllMocks();
stubClient();
client = MatrixClientPeg.get();
client = MatrixClientPeg.safeGet();
client.supportsThreads = () => true;
room = new Room(ROOM_ID, client, client.getUserId() ?? "", {
pendingEventOrdering: PendingEventOrdering.Detached,

View File

@@ -32,7 +32,7 @@ describe("BasicMessageComposer", () => {
TestUtils.stubClient();
const client: MatrixClient = MatrixClientPeg.get();
const client: MatrixClient = MatrixClientPeg.safeGet();
const roomId = "!1234567890:domain";
const userId = client.getSafeUserId();

View File

@@ -73,7 +73,7 @@ describe("EventTile", () => {
jest.clearAllMocks();
stubClient();
client = MatrixClientPeg.get();
client = MatrixClientPeg.safeGet();
room = new Room(ROOM_ID, client, client.getSafeUserId(), {
pendingEventOrdering: PendingEventOrdering.Detached,

View File

@@ -143,7 +143,7 @@ describe("MemberList", () => {
describe.each([false, true])("does order members correctly (presence %s)", (enablePresence) => {
beforeEach(function () {
TestUtils.stubClient();
client = MatrixClientPeg.get();
client = MatrixClientPeg.safeGet();
client.hasLazyLoadMembersEnabled = () => false;
// Make room

View File

@@ -71,7 +71,7 @@ const startVoiceMessage = async (): Promise<void> => {
const setCurrentBroadcastRecording = (room: Room, state: VoiceBroadcastInfoState): void => {
const recording = new VoiceBroadcastRecording(
mkVoiceBroadcastInfoStateEvent(room.roomId, state, "@user:example.com", "ABC123"),
MatrixClientPeg.get(),
MatrixClientPeg.safeGet(),
state,
);
SdkContextClass.instance.voiceBroadcastRecordingsStore.setCurrent(recording);
@@ -483,7 +483,7 @@ function wrapAndRender(
narrow = false,
tombstone?: MatrixEvent,
) {
const mockClient = MatrixClientPeg.get();
const mockClient = MatrixClientPeg.safeGet();
const roomId = "myroomid";
const room: any = props.room || {
currentState: undefined,

View File

@@ -69,7 +69,7 @@ describe("RoomHeader", () => {
mockPlatformPeg({ supportsJitsiScreensharing: () => true });
stubClient();
client = mocked(MatrixClientPeg.get());
client = mocked(MatrixClientPeg.safeGet());
client.getUserId.mockReturnValue("@alice:example.org");
room = new Room("!1:example.org", client, "@alice:example.org", {
@@ -750,7 +750,7 @@ interface IRoomCreationInfo {
function createRoom(info: IRoomCreationInfo) {
stubClient();
const client: MatrixClient = MatrixClientPeg.get();
const client: MatrixClient = MatrixClientPeg.safeGet();
const roomId = "!1234567890:domain";
const userId = client.getUserId()!;

View File

@@ -47,7 +47,7 @@ DMRoomMap.sharedInstance = { getUserIdForRoomId, getDMRoomsForUserId };
describe("RoomList", () => {
stubClient();
const client = MatrixClientPeg.get();
const client = MatrixClientPeg.safeGet();
const store = SpaceStore.instance;
function getComponent(props: Partial<ComponentProps<typeof RoomList>> = {}): JSX.Element {

View File

@@ -112,7 +112,7 @@ describe("RoomListHeader", () => {
} as unknown as DMRoomMap;
DMRoomMap.setShared(dmRoomMap);
stubClient();
client = MatrixClientPeg.get();
client = MatrixClientPeg.safeGet();
mocked(shouldShowComponent).mockReturnValue(true); // show all UIComponents
});

View File

@@ -33,7 +33,7 @@ jest.mock("../../../../src/IdentityAuthClient", () => {
jest.useRealTimers();
const createRoom = (roomId: string, userId: string): Room => {
const cli = MatrixClientPeg.get();
const cli = MatrixClientPeg.safeGet();
const newRoom = new Room(roomId, cli, userId, {});
DMRoomMap.makeShared(cli).start();
return newRoom;
@@ -92,7 +92,7 @@ describe("<RoomPreviewBar />", () => {
beforeEach(() => {
stubClient();
MatrixClientPeg.get().getUserId = jest.fn().mockReturnValue(userId);
MatrixClientPeg.safeGet().getUserId = jest.fn().mockReturnValue(userId);
});
afterEach(() => {
@@ -118,7 +118,7 @@ describe("<RoomPreviewBar />", () => {
});
it("renders not logged in message", () => {
MatrixClientPeg.get().isGuest = jest.fn().mockReturnValue(true);
MatrixClientPeg.safeGet().isGuest = jest.fn().mockReturnValue(true);
const component = getComponent({ loading: true });
expect(isSpinnerRendered(component)).toBeFalsy();
@@ -126,7 +126,7 @@ describe("<RoomPreviewBar />", () => {
});
it("should send room oob data to start login", async () => {
MatrixClientPeg.get().isGuest = jest.fn().mockReturnValue(true);
MatrixClientPeg.safeGet().isGuest = jest.fn().mockReturnValue(true);
const component = getComponent({
oobData: {
name: "Room Name",
@@ -339,7 +339,7 @@ describe("<RoomPreviewBar />", () => {
describe("when client fails to get 3PIDs", () => {
beforeEach(() => {
MatrixClientPeg.get().getThreePids = jest.fn().mockRejectedValue({ errCode: "TEST_ERROR" });
MatrixClientPeg.safeGet().getThreePids = jest.fn().mockRejectedValue({ errCode: "TEST_ERROR" });
});
it("renders error message", async () => {
@@ -354,7 +354,7 @@ describe("<RoomPreviewBar />", () => {
describe("when invitedEmail is not associated with current account", () => {
beforeEach(() => {
MatrixClientPeg.get().getThreePids = jest
MatrixClientPeg.safeGet().getThreePids = jest
.fn()
.mockResolvedValue({ threepids: mockThreePids.slice(1) });
});
@@ -371,8 +371,8 @@ describe("<RoomPreviewBar />", () => {
describe("when client has no identity server connected", () => {
beforeEach(() => {
MatrixClientPeg.get().getThreePids = jest.fn().mockResolvedValue({ threepids: mockThreePids });
MatrixClientPeg.get().getIdentityServerUrl = jest.fn().mockReturnValue(false);
MatrixClientPeg.safeGet().getThreePids = jest.fn().mockResolvedValue({ threepids: mockThreePids });
MatrixClientPeg.safeGet().getIdentityServerUrl = jest.fn().mockReturnValue(false);
});
it("renders invite message with invited email", async () => {
@@ -387,18 +387,18 @@ describe("<RoomPreviewBar />", () => {
describe("when client has an identity server connected", () => {
beforeEach(() => {
MatrixClientPeg.get().getThreePids = jest.fn().mockResolvedValue({ threepids: mockThreePids });
MatrixClientPeg.get().getIdentityServerUrl = jest.fn().mockReturnValue("identity.test");
MatrixClientPeg.get().lookupThreePid = jest.fn().mockResolvedValue("identity.test");
MatrixClientPeg.safeGet().getThreePids = jest.fn().mockResolvedValue({ threepids: mockThreePids });
MatrixClientPeg.safeGet().getIdentityServerUrl = jest.fn().mockReturnValue("identity.test");
MatrixClientPeg.safeGet().lookupThreePid = jest.fn().mockResolvedValue("identity.test");
});
it("renders email mismatch message when invite email mxid doesnt match", async () => {
MatrixClientPeg.get().lookupThreePid = jest.fn().mockReturnValue("not userid");
MatrixClientPeg.safeGet().lookupThreePid = jest.fn().mockReturnValue("not userid");
const component = getComponent({ inviterName, invitedEmail });
await new Promise(setImmediate);
expect(getMessage(component)).toMatchSnapshot();
expect(MatrixClientPeg.get().lookupThreePid).toHaveBeenCalledWith(
expect(MatrixClientPeg.safeGet().lookupThreePid).toHaveBeenCalledWith(
"email",
invitedEmail,
"mock-token",
@@ -407,7 +407,7 @@ describe("<RoomPreviewBar />", () => {
});
it("renders invite message when invite email mxid match", async () => {
MatrixClientPeg.get().lookupThreePid = jest.fn().mockReturnValue(userId);
MatrixClientPeg.safeGet().lookupThreePid = jest.fn().mockReturnValue(userId);
const component = getComponent({ inviterName, invitedEmail });
await new Promise(setImmediate);

View File

@@ -40,7 +40,7 @@ describe("RoomPreviewCard", () => {
beforeEach(() => {
stubClient();
client = mocked(MatrixClientPeg.get());
client = mocked(MatrixClientPeg.safeGet());
client.getUserId.mockReturnValue("@alice:example.org");
DMRoomMap.makeShared(client);

View File

@@ -31,7 +31,7 @@ type Props = React.ComponentPropsWithoutRef<typeof SearchResultTile>;
describe("SearchResultTile", () => {
beforeAll(() => {
stubClient();
const cli = MatrixClientPeg.get();
const cli = MatrixClientPeg.safeGet();
const room = new Room(ROOM_ID, cli, "@bob:example.org");
jest.spyOn(cli, "getRoom").mockReturnValue(room);

View File

@@ -56,6 +56,7 @@ describe("<VoiceRecordComposerTile/>", () => {
sendMessage: jest.fn(),
} as unknown as MatrixClient;
MatrixClientPeg.get = () => mockClient;
MatrixClientPeg.safeGet = () => mockClient;
const room = {
roomId,

View File

@@ -29,7 +29,7 @@ describe("CryptographyPanel", () => {
const sessionKeyFormatted = "<b>AbCD eFgh IJK7 L/m4 nOPq RSTU VW4x yzaB CDef 6gHI Jkl</b>";
TestUtils.stubClient();
const client: MatrixClient = MatrixClientPeg.get();
const client: MatrixClient = MatrixClientPeg.safeGet();
client.deviceId = sessionId;
client.getDeviceEd25519Key = () => sessionKey;

View File

@@ -41,7 +41,7 @@ describe("AdvancedRoomSettingsTab", () => {
beforeEach(() => {
stubClient();
cli = MatrixClientPeg.get();
cli = MatrixClientPeg.safeGet();
room = mkStubRoom(roomId, "test room", cli);
mocked(cli.getRoom).mockReturnValue(room);
mocked(dis.dispatch).mockReset();

View File

@@ -38,7 +38,7 @@ describe("NotificatinSettingsTab", () => {
beforeEach(() => {
stubClient();
cli = MatrixClientPeg.get();
cli = MatrixClientPeg.safeGet();
const room = mkStubRoom(roomId, "test room", cli);
roomProps = EchoChamber.forRoom(room);

View File

@@ -50,7 +50,7 @@ describe("RolesRoomSettingsTab", () => {
beforeEach(() => {
stubClient();
cli = MatrixClientPeg.get();
cli = MatrixClientPeg.safeGet();
room = mkStubRoom(roomId, "test room", cli);
});

View File

@@ -38,7 +38,7 @@ describe("VoipRoomSettingsTab", () => {
beforeEach(() => {
stubClient();
cli = MatrixClientPeg.get();
cli = MatrixClientPeg.safeGet();
room = mkStubRoom(roomId, "test room", cli);
jest.spyOn(cli, "sendStateEvent");

View File

@@ -53,7 +53,7 @@ describe("PreferencesUserSettingsTab", () => {
const getToggle = () => renderTab().getByRole("switch", { name: "Send read receipts" });
const mockIsVersionSupported = (val: boolean) => {
const client = MatrixClientPeg.get();
const client = MatrixClientPeg.safeGet();
jest.spyOn(client, "doesServerSupportUnstableFeature").mockResolvedValue(false);
jest.spyOn(client, "isVersionSupported").mockImplementation(async (version: string) => {
if (version === "v1.4") return val;

View File

@@ -107,6 +107,7 @@ describe("<SpaceSettingsVisibilityTab />", () => {
(mockMatrixClient.sendStateEvent as jest.Mock).mockClear().mockResolvedValue({});
MatrixClientPeg.get = jest.fn().mockReturnValue(mockMatrixClient);
MatrixClientPeg.safeGet = jest.fn().mockReturnValue(mockMatrixClient);
});
afterEach(() => {

View File

@@ -39,8 +39,8 @@ jest.mock("../../../../src/stores/spaces/SpaceStore", () => {
describe("SpaceButton", () => {
stubClient();
const space = mkRoom(MatrixClientPeg.get(), "!1:example.org");
DMRoomMap.makeShared(MatrixClientPeg.get());
const space = mkRoom(MatrixClientPeg.safeGet(), "!1:example.org");
DMRoomMap.makeShared(MatrixClientPeg.safeGet());
const dispatchSpy = jest.spyOn(defaultDispatcher, "dispatch");

View File

@@ -54,7 +54,7 @@ describe("CallLobby", () => {
mocked(navigator.mediaDevices.enumerateDevices).mockResolvedValue([]);
stubClient();
client = mocked(MatrixClientPeg.get());
client = mocked(MatrixClientPeg.safeGet());
room = new Room("!1:example.org", client, "@alice:example.org", {
pendingEventOrdering: PendingEventOrdering.Detached,