Remove more usages of singleton store getter in favour of contexts (#34099)
* Expose SDKContextClass via window for debugging * Remove stores from window if they are exposed via sdkContext * Avoid usages of global store instance where React context is accessible * Remove more usages of singleton store getter in favour of contexts * Remove more usages of singleton store getter in favour of contexts * Fix tests by adding SDKContext.Provider * Fix tests by adding SDKContext.Provider * Fix tests by adding SDKContext.Provider * Fix tests by adding SDKContext.Provider * Fix tests * Fix tests * Fix tests * Iterate * Fix bad merge * Iterate * Fix tests * Iterate * Iterate * Iterate * Iterate * Iterate * Improve coverage * Improve coverage
This commit is contained in:
@@ -10,7 +10,9 @@ import React from "react";
|
||||
import { MatrixEvent, Room } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import RoomInfoLine from "../../../../../src/components/views/rooms/RoomInfoLine.tsx";
|
||||
import { stubClient } from "../../../../test-utils";
|
||||
import { stubClient, TestSDKContext, withContexts } from "../../../../test-utils";
|
||||
import { fireEvent } from "@testing-library/dom";
|
||||
import { RightPanelPhases } from "../../../../../src/stores/right-panel/RightPanelStorePhases.ts";
|
||||
|
||||
describe("RoomInfoLine", () => {
|
||||
it("renders for public room", () => {
|
||||
@@ -33,4 +35,29 @@ describe("RoomInfoLine", () => {
|
||||
expect(getByText("Public room")).toBeVisible();
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("should render members button which opens right panel", async () => {
|
||||
const sdkContext = new TestSDKContext();
|
||||
sdkContext._client = stubClient();
|
||||
const room = new Room("!roomId", sdkContext.client!, sdkContext.client!.getUserId()!);
|
||||
room.currentState.setStateEvents([
|
||||
new MatrixEvent({
|
||||
sender: sdkContext.client!.getUserId()!,
|
||||
room_id: room.roomId,
|
||||
state_key: "",
|
||||
event_id: "$eventId",
|
||||
type: "m.room.join_rules",
|
||||
content: {
|
||||
join_rule: "public",
|
||||
},
|
||||
}),
|
||||
]);
|
||||
jest.spyOn(room, "getJoinedMemberCount").mockReturnValue(50);
|
||||
|
||||
jest.spyOn(sdkContext.rightPanelStore, "setCard");
|
||||
|
||||
const { findByText } = render(<RoomInfoLine room={room} />, withContexts({ sdkContext }));
|
||||
fireEvent.click(await findByText("50 members"));
|
||||
expect(sdkContext.rightPanelStore.setCard).toHaveBeenCalledWith({ phase: RightPanelPhases.MemberList });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -11,7 +11,12 @@ import { render, screen } from "jest-matrix-react";
|
||||
import { EventType, type IEvent, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import ThirdPartyMemberInfo from "../../../../../src/components/views/rooms/ThirdPartyMemberInfo";
|
||||
import { getMockClientWithEventEmitter, mockClientMethodsUser } from "../../../../test-utils";
|
||||
import {
|
||||
clientAndSDKContextRenderOptions,
|
||||
getMockClientWithEventEmitter,
|
||||
mockClientMethodsUser,
|
||||
} from "../../../../test-utils";
|
||||
import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass.ts";
|
||||
|
||||
describe("<ThirdPartyMemberInfo />", () => {
|
||||
const userId = "@alice:server.org";
|
||||
@@ -37,7 +42,11 @@ describe("<ThirdPartyMemberInfo />", () => {
|
||||
});
|
||||
const defaultEvent = makeInviteEvent();
|
||||
|
||||
const getComponent = (event: MatrixEvent = defaultEvent) => render(<ThirdPartyMemberInfo event={event} />);
|
||||
const getComponent = (event: MatrixEvent = defaultEvent) =>
|
||||
render(
|
||||
<ThirdPartyMemberInfo event={event} />,
|
||||
clientAndSDKContextRenderOptions(mockClient, SDKContextClass.instance),
|
||||
);
|
||||
const room = new Room(roomId, mockClient, userId);
|
||||
const aliceMember = new RoomMember(roomId, userId);
|
||||
aliceMember.name = "Alice DisplayName";
|
||||
|
||||
Reference in New Issue
Block a user