Skip to content

Commit a253386

Browse files
committed
test: add test for hidePinnedMessageBanner
1 parent fb95ec8 commit a253386

2 files changed

Lines changed: 415 additions & 18 deletions

File tree

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ import { CallStore } from "../../../../src/stores/CallStore.ts";
7777
import MediaDeviceHandler, { MediaDeviceKindEnum } from "../../../../src/MediaDeviceHandler.ts";
7878
import Modal, { type ComponentProps } from "../../../../src/Modal.tsx";
7979
import ErrorDialog from "../../../../src/components/views/dialogs/ErrorDialog.tsx";
80+
import * as pinnedEventHooks from "../../../../src/hooks/usePinnedEvents";
8081

8182
// Used by group calls
8283
jest.spyOn(MediaDeviceHandler, "getDevices").mockResolvedValue({
@@ -124,6 +125,11 @@ describe("RoomView", () => {
124125
afterEach(() => {
125126
unmockPlatformPeg();
126127
jest.clearAllMocks();
128+
129+
// Can't jest.restoreAllMocks() because some tests will break
130+
jest.spyOn(pinnedEventHooks, "usePinnedEvents").mockRestore();
131+
jest.spyOn(pinnedEventHooks, "useSortedFetchedPinnedEvents").mockRestore();
132+
127133
cleanup();
128134
});
129135

@@ -298,6 +304,35 @@ describe("RoomView", () => {
298304
expect(asFragment()).toMatchSnapshot();
299305
});
300306

307+
it("should hide the pinned message banner when hidePinnedMessageBanner=true", async () => {
308+
// Join the room
309+
jest.spyOn(room, "getMyMembership").mockReturnValue(KnownMembership.Join);
310+
311+
const pinnedEvent = new MatrixEvent({
312+
type: EventType.RoomMessage,
313+
sender: "@alice:example.org",
314+
content: {
315+
body: "First pinned message",
316+
msgtype: "m.text",
317+
},
318+
room_id: room.roomId,
319+
origin_server_ts: 0,
320+
event_id: "$eventId",
321+
});
322+
323+
jest.spyOn(pinnedEventHooks, "usePinnedEvents").mockReturnValue([pinnedEvent.getId()!]);
324+
jest.spyOn(pinnedEventHooks, "useSortedFetchedPinnedEvents").mockReturnValue([pinnedEvent]);
325+
326+
const { asFragment, rerender } = await mountRoomView(undefined);
327+
// Check that the pinned message banner is rendered
328+
await expect(screen.findByTestId("pinned-message-banner")).resolves.toBeTruthy();
329+
// Now rerender with hidePinnedMessagesBanner=true
330+
rerender(<RoomView threepidInvite={undefined} forceTimeline={false} hidePinnedMessageBanner={true} />);
331+
// Check that the pinned message banner is not rendered
332+
await expect(screen.findByTestId("pinned-message-banner")).rejects.toThrow();
333+
expect(asFragment()).toMatchSnapshot();
334+
});
335+
301336
describe("invites", () => {
302337
beforeEach(() => {
303338
const member = new RoomMember(room.roomId, cli.getSafeUserId());

0 commit comments

Comments
 (0)