Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 625760a

Browse files
committed
add tests for functional members
1 parent 52da061 commit 625760a

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

test/components/views/avatars/DecoratedRoomAvatar-test.tsx

+34-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ limitations under the License.
1616

1717
import { render, waitFor } from "@testing-library/react";
1818
import { mocked } from "jest-mock";
19-
import { JoinRule, MatrixClient, PendingEventOrdering, Room } from "matrix-js-sdk/src/matrix";
19+
import { JoinRule, MatrixClient, PendingEventOrdering, Room, RoomMember } from "matrix-js-sdk/src/matrix";
2020
import React from "react";
2121
import userEvent from "@testing-library/user-event";
2222
import { TooltipProvider } from "@vector-im/compound-web";
@@ -25,9 +25,13 @@ import { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
2525
import { stubClient } from "../../../test-utils";
2626
import DecoratedRoomAvatar from "../../../../src/components/views/avatars/DecoratedRoomAvatar";
2727
import DMRoomMap from "../../../../src/utils/DMRoomMap";
28+
import { isPresenceEnabled } from "../../../../src/utils/presence";
29+
import { getJoinedNonFunctionalMembers } from "../../../../src/utils/room/getJoinedNonFunctionalMembers";
2830

2931
describe("DecoratedRoomAvatar", () => {
3032
const ROOM_ID = "roomId";
33+
const MY_USER_ID = "@alice:foo.bar";
34+
const DM_USER_ID = "@bob:foo.bar";
3135

3236
let mockClient: MatrixClient;
3337
let room: Room;
@@ -40,8 +44,16 @@ describe("DecoratedRoomAvatar", () => {
4044
pendingEventOrdering: PendingEventOrdering.Detached,
4145
});
4246

47+
jest.fn(isPresenceEnabled).mockReturnValue(true);
48+
jest.fn(getJoinedNonFunctionalMembers).mockReturnValue([
49+
new RoomMember(ROOM_ID, MY_USER_ID),
50+
new RoomMember(ROOM_ID, DM_USER_ID),
51+
]);
52+
4353
const dmRoomMap = {
44-
getUserIdForRoomId: jest.fn(),
54+
getUserIdForRoomId: () => {
55+
return DM_USER_ID;
56+
},
4557
} as unknown as DMRoomMap;
4658
jest.spyOn(DMRoomMap, "shared").mockReturnValue(dmRoomMap);
4759
});
@@ -66,4 +78,24 @@ describe("DecoratedRoomAvatar", () => {
6678

6779
expect(asFragment()).toMatchSnapshot();
6880
});
81+
82+
it("shows the presence indicator in a DM room with functional members", async () => {
83+
const { container, asFragment } = render(<DecoratedRoomAvatar room={room} size="32px" />, {
84+
wrapper: TooltipProvider,
85+
});
86+
87+
const presence = container.querySelector(".mx_DecoratedRoomAvatar_icon")!;
88+
expect(presence).toBeVisible();
89+
await userEvent.hover(presence!);
90+
91+
// wait for the tooltip to open
92+
const tooltip = await waitFor(() => {
93+
const tooltip = document.getElementById(presence.getAttribute("aria-describedby")!);
94+
expect(tooltip).toBeVisible();
95+
return tooltip;
96+
});
97+
expect(tooltip).toHaveTextContent("Offline");
98+
99+
expect(asFragment()).toMatchSnapshot();
100+
});
69101
});

0 commit comments

Comments
 (0)