diff --git a/test/components/views/avatars/DecoratedRoomAvatar-test.tsx b/test/components/views/avatars/DecoratedRoomAvatar-test.tsx
index a43d41c086bc..43a8ec6b4f18 100644
--- a/test/components/views/avatars/DecoratedRoomAvatar-test.tsx
+++ b/test/components/views/avatars/DecoratedRoomAvatar-test.tsx
@@ -26,6 +26,14 @@ import { stubClient } from "../../../test-utils";
import DecoratedRoomAvatar from "../../../../src/components/views/avatars/DecoratedRoomAvatar";
import DMRoomMap from "../../../../src/utils/DMRoomMap";
+jest.mock("../../../../src/utils/presence", () => ({ isPresenceEnabled: jest.fn().mockReturnValue(true) }));
+
+jest.mock("../../../../src/utils/room/getJoinedNonFunctionalMembers", () => ({
+ getJoinedNonFunctionalMembers: jest.fn().mockReturnValue([0, 1]),
+}));
+
+jest.spyOn(DecoratedRoomAvatar.prototype as any, "getPresenceIcon").mockImplementation(() => "ONLINE");
+
describe("DecoratedRoomAvatar", () => {
const ROOM_ID = "roomId";
@@ -39,14 +47,14 @@ describe("DecoratedRoomAvatar", () => {
room = new Room(ROOM_ID, mockClient, mockClient.getUserId() ?? "", {
pendingEventOrdering: PendingEventOrdering.Detached,
});
+ });
+ it("shows an avatar with globe icon and tooltip for public room", async () => {
const dmRoomMap = {
getUserIdForRoomId: jest.fn(),
} as unknown as DMRoomMap;
jest.spyOn(DMRoomMap, "shared").mockReturnValue(dmRoomMap);
- });
- it("shows an avatar with globe icon and tooltip for public room", async () => {
room.getJoinRule = jest.fn().mockReturnValue(JoinRule.Public);
const { container, asFragment } = render(, {
wrapper: TooltipProvider,
@@ -66,4 +74,31 @@ describe("DecoratedRoomAvatar", () => {
expect(asFragment()).toMatchSnapshot();
});
+
+ it("shows the presence indicator in a DM room that also has functional members", async () => {
+ const DM_USER_ID = "@bob:foo.bar";
+ const dmRoomMap = {
+ getUserIdForRoomId: () => {
+ return DM_USER_ID;
+ },
+ } as unknown as DMRoomMap;
+ jest.spyOn(DMRoomMap, "shared").mockReturnValue(dmRoomMap);
+ const { container, asFragment } = render(, {
+ wrapper: TooltipProvider,
+ });
+
+ const presence = container.querySelector(".mx_DecoratedRoomAvatar_icon")!;
+ expect(presence).toBeVisible();
+ await userEvent.hover(presence!);
+
+ // wait for the tooltip to open
+ const tooltip = await waitFor(() => {
+ const tooltip = document.getElementById(presence.getAttribute("aria-describedby")!);
+ expect(tooltip).toBeVisible();
+ return tooltip;
+ });
+ expect(tooltip).toHaveTextContent("Online");
+
+ expect(asFragment()).toMatchSnapshot();
+ });
});