Skip to content

Commit 2099aaa

Browse files
committed
Improve coverage
Signed-off-by: Michael Telatynski <[email protected]>
1 parent 351774d commit 2099aaa

File tree

3 files changed

+139
-6
lines changed

3 files changed

+139
-6
lines changed

test/unit-tests/components/structures/RoomView-test.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import { ViewRoomErrorPayload } from "../../../../src/dispatcher/payloads/ViewRo
7575
import { SearchScope } from "../../../../src/Searching";
7676
import { MEGOLM_ENCRYPTION_ALGORITHM } from "../../../../src/utils/crypto";
7777
import MatrixClientContext from "../../../../src/contexts/MatrixClientContext";
78+
import { ViewUserPayload } from "../../../../src/dispatcher/payloads/ViewUserPayload.ts";
7879

7980
describe("RoomView", () => {
8081
let cli: MockedObject<MatrixClient>;
@@ -202,6 +203,21 @@ describe("RoomView", () => {
202203
return ref.current!;
203204
};
204205

206+
it("should show member list right panel phase on Action.ViewUser without `payload.member`", async () => {
207+
const spy = jest.spyOn(stores.rightPanelStore, "showOrHidePhase");
208+
await renderRoomView(false);
209+
210+
defaultDispatcher.dispatch<ViewUserPayload>(
211+
{
212+
action: Action.ViewUser,
213+
member: undefined,
214+
},
215+
true,
216+
);
217+
218+
expect(spy).toHaveBeenCalledWith(RightPanelPhases.MemberList);
219+
});
220+
205221
it("when there is no room predecessor, getHiddenHighlightCount should return 0", async () => {
206222
const instance = await getRoomViewInstance();
207223
expect(instance.getHiddenHighlightCount()).toBe(0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/*
2+
Copyright 2024 New Vector Ltd.
3+
4+
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
5+
Please see LICENSE files in the repository root for full details.
6+
*/
7+
8+
import React from "react";
9+
import { mocked, MockedObject } from "jest-mock";
10+
import { MatrixClient, MatrixEvent, Room } from "matrix-js-sdk/src/matrix";
11+
import { render, cleanup, screen, fireEvent } from "jest-matrix-react";
12+
13+
import { stubClient, mockPlatformPeg, unmockPlatformPeg, withClientContextRenderOptions } from "../../../test-utils";
14+
import { RightPanelPhases } from "../../../../src/stores/right-panel/RightPanelStorePhases";
15+
import SpaceRoomView from "../../../../src/components/structures/SpaceRoomView.tsx";
16+
import ResizeNotifier from "../../../../src/utils/ResizeNotifier.ts";
17+
import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks.ts";
18+
import RightPanelStore from "../../../../src/stores/right-panel/RightPanelStore.ts";
19+
import DMRoomMap from "../../../../src/utils/DMRoomMap.ts";
20+
21+
describe("SpaceRoomView", () => {
22+
let cli: MockedObject<MatrixClient>;
23+
let space: Room;
24+
25+
beforeEach(() => {
26+
mockPlatformPeg({ reload: () => {} });
27+
cli = mocked(stubClient());
28+
29+
space = new Room(`!space:example.org`, cli, cli.getSafeUserId());
30+
space.currentState.setStateEvents([
31+
new MatrixEvent({
32+
type: "m.room.create",
33+
room_id: space.roomId,
34+
sender: cli.getSafeUserId(),
35+
state_key: "",
36+
content: {
37+
creator: cli.getSafeUserId(),
38+
type: "m.space",
39+
},
40+
}),
41+
new MatrixEvent({
42+
type: "m.room.member",
43+
room_id: space.roomId,
44+
sender: cli.getSafeUserId(),
45+
state_key: cli.getSafeUserId(),
46+
content: {
47+
membership: "join",
48+
},
49+
}),
50+
new MatrixEvent({
51+
type: "m.room.member",
52+
room_id: space.roomId,
53+
sender: "@userA:server",
54+
state_key: "@userA:server",
55+
content: {
56+
membership: "join",
57+
},
58+
}),
59+
new MatrixEvent({
60+
type: "m.room.member",
61+
room_id: space.roomId,
62+
sender: "@userB:server",
63+
state_key: "@userB:server",
64+
content: {
65+
membership: "join",
66+
},
67+
}),
68+
new MatrixEvent({
69+
type: "m.room.member",
70+
room_id: space.roomId,
71+
sender: "@userC:server",
72+
state_key: "@userC:server",
73+
content: {
74+
membership: "join",
75+
},
76+
}),
77+
]);
78+
space.updateMyMembership("join");
79+
80+
DMRoomMap.makeShared(cli);
81+
});
82+
83+
afterEach(() => {
84+
unmockPlatformPeg();
85+
jest.clearAllMocks();
86+
cleanup();
87+
});
88+
89+
const renderSpaceRoomView = async (): Promise<ReturnType<typeof render>> => {
90+
const resizeNotifier = new ResizeNotifier();
91+
const permalinkCreator = new RoomPermalinkCreator(space);
92+
93+
const spaceRoomView = render(
94+
<SpaceRoomView
95+
space={space}
96+
resizeNotifier={resizeNotifier}
97+
permalinkCreator={permalinkCreator}
98+
onJoinButtonClicked={jest.fn()}
99+
onRejectButtonClicked={jest.fn()}
100+
/>,
101+
withClientContextRenderOptions(cli),
102+
);
103+
return spaceRoomView;
104+
};
105+
106+
describe("SpaceLanding", () => {
107+
it("should show member list right panel phase on members click on landing", async () => {
108+
const spy = jest.spyOn(RightPanelStore.instance, "setCard");
109+
const { container } = await renderSpaceRoomView();
110+
111+
await expect(screen.findByText("Welcome to")).resolves.toBeVisible();
112+
fireEvent.click(container.querySelector(".mx_FacePile")!);
113+
114+
expect(spy).toHaveBeenCalledWith({ phase: RightPanelPhases.MemberList });
115+
});
116+
});
117+
});

test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap

+6-6
Original file line numberDiff line numberDiff line change
@@ -1302,7 +1302,7 @@ exports[`RoomView should not display the timeline when the room encryption is lo
13021302
aria-label="Open room settings"
13031303
aria-live="off"
13041304
class="_avatar_mcap2_17 mx_BaseAvatar _avatar-imageless_mcap2_61"
1305-
data-color="1"
1305+
data-color="2"
13061306
data-testid="avatar-img"
13071307
data-type="round"
13081308
role="button"
@@ -1329,7 +1329,7 @@ exports[`RoomView should not display the timeline when the room encryption is lo
13291329
<span
13301330
class="mx_RoomHeader_truncated mx_lineClamp"
13311331
>
1332-
!5:example.org
1332+
!6:example.org
13331333
</span>
13341334
</div>
13351335
</div>
@@ -1513,7 +1513,7 @@ exports[`RoomView should not display the timeline when the room encryption is lo
15131513
aria-label="Open room settings"
15141514
aria-live="off"
15151515
class="_avatar_mcap2_17 mx_BaseAvatar _avatar-imageless_mcap2_61"
1516-
data-color="1"
1516+
data-color="2"
15171517
data-testid="avatar-img"
15181518
data-type="round"
15191519
role="button"
@@ -1540,7 +1540,7 @@ exports[`RoomView should not display the timeline when the room encryption is lo
15401540
<span
15411541
class="mx_RoomHeader_truncated mx_lineClamp"
15421542
>
1543-
!5:example.org
1543+
!6:example.org
15441544
</span>
15451545
</div>
15461546
</div>
@@ -1897,7 +1897,7 @@ exports[`RoomView video rooms should render joined video room view 1`] = `
18971897
aria-label="Open room settings"
18981898
aria-live="off"
18991899
class="_avatar_mcap2_17 mx_BaseAvatar _avatar-imageless_mcap2_61"
1900-
data-color="5"
1900+
data-color="6"
19011901
data-testid="avatar-img"
19021902
data-type="round"
19031903
role="button"
@@ -1924,7 +1924,7 @@ exports[`RoomView video rooms should render joined video room view 1`] = `
19241924
<span
19251925
class="mx_RoomHeader_truncated mx_lineClamp"
19261926
>
1927-
!12:example.org
1927+
!13:example.org
19281928
</span>
19291929
</div>
19301930
</div>

0 commit comments

Comments
 (0)