Skip to content

Commit d983e01

Browse files
committed
test(room list item menu view model): add tests for new attributes
1 parent 98bb366 commit d983e01

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

test/unit-tests/components/viewmodels/roomlist/RoomListItemMenuViewModel-test.tsx

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,33 @@ import { type MatrixClient, type Room } from "matrix-js-sdk/src/matrix";
1111

1212
import { mkStubRoom, stubClient, withClientContextRenderOptions } from "../../../../test-utils";
1313
import { useRoomListItemMenuViewModel } from "../../../../../src/components/viewmodels/roomlist/RoomListItemMenuViewModel";
14-
import { hasAccessToOptionsMenu } from "../../../../../src/components/viewmodels/roomlist/utils";
14+
import {
15+
hasAccessToNotificationMenu,
16+
hasAccessToOptionsMenu,
17+
} from "../../../../../src/components/viewmodels/roomlist/utils";
1518
import DMRoomMap from "../../../../../src/utils/DMRoomMap";
1619
import { DefaultTagID } from "../../../../../src/stores/room-list/models";
1720
import { useUnreadNotifications } from "../../../../../src/hooks/useUnreadNotifications";
1821
import { NotificationLevel } from "../../../../../src/stores/notifications/NotificationLevel";
1922
import { clearRoomNotification, setMarkedUnreadState } from "../../../../../src/utils/notifications";
2023
import { tagRoom } from "../../../../../src/utils/room/tagRoom";
2124
import dispatcher from "../../../../../src/dispatcher/dispatcher";
25+
import { useNotificationState } from "../../../../../src/hooks/useRoomNotificationState";
26+
import { RoomNotifState } from "../../../../../src/RoomNotifs";
2227

2328
jest.mock("../../../../../src/components/viewmodels/roomlist/utils", () => ({
2429
hasAccessToOptionsMenu: jest.fn().mockReturnValue(false),
30+
hasAccessToNotificationMenu: jest.fn().mockReturnValue(false),
2531
}));
2632

2733
jest.mock("../../../../../src/hooks/useUnreadNotifications", () => ({
2834
useUnreadNotifications: jest.fn(),
2935
}));
3036

37+
jest.mock("../../../../../src/hooks/useRoomNotificationState", () => ({
38+
useNotificationState: jest.fn(),
39+
}));
40+
3141
jest.mock("../../../../../src/utils/notifications", () => ({
3242
clearRoomNotification: jest.fn(),
3343
setMarkedUnreadState: jest.fn(),
@@ -49,6 +59,7 @@ describe("RoomListItemMenuViewModel", () => {
4959
jest.spyOn(DMRoomMap.shared(), "getUserIdForRoomId").mockReturnValue(null);
5060

5161
mocked(useUnreadNotifications).mockReturnValue({ symbol: null, count: 0, level: NotificationLevel.None });
62+
mocked(useNotificationState).mockReturnValue([RoomNotifState.AllMessages, jest.fn()]);
5263
jest.spyOn(dispatcher, "dispatch");
5364
});
5465

@@ -76,6 +87,12 @@ describe("RoomListItemMenuViewModel", () => {
7687
expect(result.current.showMoreOptionsMenu).toBe(true);
7788
});
7889

90+
it("should has showNotificationMenu to be true", () => {
91+
mocked(hasAccessToNotificationMenu).mockReturnValue(true);
92+
const { result } = render();
93+
expect(result.current.showNotificationMenu).toBe(true);
94+
});
95+
7996
it("should be able to invite", () => {
8097
jest.spyOn(room, "canInvite").mockReturnValue(true);
8198
const { result } = render();
@@ -106,6 +123,29 @@ describe("RoomListItemMenuViewModel", () => {
106123
expect(result.current.canMarkAsUnread).toBe(false);
107124
});
108125

126+
it("should has isNotificationAllMessage to be true", () => {
127+
const { result } = render();
128+
expect(result.current.isNotificationAllMessage).toBe(true);
129+
});
130+
131+
it("should has isNotificationAllMessageLoud to be true", () => {
132+
mocked(useNotificationState).mockReturnValue([RoomNotifState.AllMessagesLoud, jest.fn()]);
133+
const { result } = render();
134+
expect(result.current.isNotificationAllMessageLoud).toBe(true);
135+
});
136+
137+
it("should has isNotificationMentionOnly to be true", () => {
138+
mocked(useNotificationState).mockReturnValue([RoomNotifState.MentionsOnly, jest.fn()]);
139+
const { result } = render();
140+
expect(result.current.isNotificationMentionOnly).toBe(true);
141+
});
142+
143+
it("should has isNotificationMute to be true", () => {
144+
mocked(useNotificationState).mockReturnValue([RoomNotifState.Mute, jest.fn()]);
145+
const { result } = render();
146+
expect(result.current.isNotificationMute).toBe(true);
147+
});
148+
109149
// Actions
110150

111151
it("should mark as read", () => {
@@ -170,4 +210,12 @@ describe("RoomListItemMenuViewModel", () => {
170210
room_id: room.roomId,
171211
});
172212
});
213+
214+
it("should call setRoomNotifState", () => {
215+
const setRoomNotifState = jest.fn();
216+
mocked(useNotificationState).mockReturnValue([RoomNotifState.AllMessages, setRoomNotifState]);
217+
const { result } = render();
218+
result.current.setRoomNotifState(RoomNotifState.Mute);
219+
expect(setRoomNotifState).toHaveBeenCalledWith(RoomNotifState.Mute);
220+
});
173221
});

0 commit comments

Comments
 (0)