Skip to content

Commit 2b711cc

Browse files
committed
test(room list item): add tests
1 parent d22b274 commit 2b711cc

File tree

2 files changed

+15
-51
lines changed

2 files changed

+15
-51
lines changed

test/unit-tests/components/views/rooms/RoomListPanel/RoomListItemView-test.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88
import React from "react";
99
import { type MatrixClient, type Room } from "matrix-js-sdk/src/matrix";
10-
import { render, screen } from "jest-matrix-react";
10+
import { render, screen, waitFor } from "jest-matrix-react";
1111
import userEvent from "@testing-library/user-event";
1212
import { mocked } from "jest-mock";
1313

14-
import { mkRoom, stubClient } from "../../../../../test-utils";
14+
import { mkRoom, stubClient, withClientContextRenderOptions } from "../../../../../test-utils";
1515
import { RoomListItemView } from "../../../../../../src/components/views/rooms/RoomListPanel/RoomListItemView";
1616
import DMRoomMap from "../../../../../../src/utils/DMRoomMap";
1717
import {
@@ -26,6 +26,7 @@ jest.mock("../../../../../../src/components/viewmodels/roomlist/RoomListItemView
2626
describe("<RoomListItemView />", () => {
2727
const defaultValue: RoomListItemViewState = {
2828
openRoom: jest.fn(),
29+
showHoverMenu: false,
2930
};
3031
let matrixClient: MatrixClient;
3132
let room: Room;
@@ -52,4 +53,16 @@ describe("<RoomListItemView />", () => {
5253
await user.click(screen.getByRole("button", { name: `Open room ${room.name}` }));
5354
expect(defaultValue.openRoom).toHaveBeenCalled();
5455
});
56+
57+
test("should hover decoration if hovered", async () => {
58+
mocked(useRoomListItemViewModel).mockReturnValue({ ...defaultValue, showHoverMenu: true });
59+
60+
const user = userEvent.setup();
61+
render(<RoomListItemView room={room} />, withClientContextRenderOptions(matrixClient));
62+
const listItem = screen.getByRole("button", { name: `Open room ${room.name}` });
63+
expect(screen.queryByRole("button", { name: "More Options" })).toBeNull();
64+
65+
await user.hover(listItem);
66+
await waitFor(() => expect(screen.getByRole("button", { name: "More Options" })).toBeInTheDocument());
67+
});
5568
});

test/unit-tests/components/views/rooms/RoomListPanel/__snapshots__/RoomListItemView-test.tsx.snap

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -48,52 +48,3 @@ exports[`<RoomListItemView /> should render a room item 1`] = `
4848
</button>
4949
</DocumentFragment>
5050
`;
51-
52-
exports[`<RoomListItemView /> should render a room item 1`] = `
53-
<DocumentFragment>
54-
<button
55-
aria-label="Open room room1"
56-
class="mx_RoomListItemView"
57-
type="button"
58-
>
59-
<div
60-
class="mx_Flex mx_RoomListItemView_container"
61-
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: start; --mx-flex-gap: var(--cpd-space-3x);"
62-
>
63-
<div
64-
class="mx_DecoratedRoomAvatar"
65-
>
66-
<span
67-
aria-label="Avatar"
68-
class="_avatar_1qbcf_8 mx_BaseAvatar"
69-
data-color="3"
70-
data-testid="avatar-img"
71-
data-type="round"
72-
style="--cpd-avatar-size: 32px;"
73-
>
74-
<img
75-
alt=""
76-
class="_image_1qbcf_41"
77-
data-type="round"
78-
height="32px"
79-
loading="lazy"
80-
referrerpolicy="no-referrer"
81-
src="http://this.is.a.url/avatar.url/room.png"
82-
width="32px"
83-
/>
84-
</span>
85-
</div>
86-
<div
87-
class="mx_Flex mx_RoomListItemView_content"
88-
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: start; --mx-flex-gap: 0;"
89-
>
90-
<span
91-
title="room1"
92-
>
93-
room1
94-
</span>
95-
</div>
96-
</div>
97-
</button>
98-
</DocumentFragment>
99-
`;

0 commit comments

Comments
 (0)