diff --git a/src/components/views/rooms/PinnedMessageBanner.tsx b/src/components/views/rooms/PinnedMessageBanner.tsx index 56566e5aa7d..3f6a1b14a61 100644 --- a/src/components/views/rooms/PinnedMessageBanner.tsx +++ b/src/components/views/rooms/PinnedMessageBanner.tsx @@ -147,10 +147,15 @@ function EventPreview({ pinnedEvent }: EventPreviewProps): JSX.Element | null { if (!preview) return null; const prefix = getPreviewPrefix(pinnedEvent.getType(), pinnedEvent.getContent().msgtype as MsgType); - if (!prefix) return {preview}; + if (!prefix) + return ( + + {preview} + + ); return ( - + {_t( "room|pinned_message_banner|preview", { diff --git a/test/components/views/rooms/PinnedMessageBanner-test.tsx b/test/components/views/rooms/PinnedMessageBanner-test.tsx index 0febf21a91d..0231d18ffcb 100644 --- a/test/components/views/rooms/PinnedMessageBanner-test.tsx +++ b/test/components/views/rooms/PinnedMessageBanner-test.tsx @@ -22,7 +22,7 @@ import userEvent from "@testing-library/user-event"; import * as pinnedEventHooks from "../../../../src/hooks/usePinnedEvents"; import { PinnedMessageBanner } from "../../../../src/components/views/rooms/PinnedMessageBanner"; import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks"; -import { stubClient } from "../../../test-utils"; +import { makePollStartEvent, stubClient } from "../../../test-utils"; import dis from "../../../../src/dispatcher/dispatcher"; import RightPanelStore from "../../../../src/stores/right-panel/RightPanelStore"; import { RightPanelPhases } from "../../../../src/stores/right-panel/RightPanelStorePhases"; @@ -185,6 +185,32 @@ describe("", () => { }); }); + it.each([ + ["m.file", "File"], + ["m.audio", "Audio"], + ["m.video", "Video"], + ["m.image", "Image"], + ])("should display the %s event type", (msgType, label) => { + const body = `Message with ${msgType} type`; + const event = makePinEvent({ content: { body, msgtype: msgType } }); + jest.spyOn(pinnedEventHooks, "usePinnedEvents").mockReturnValue([event.getId()!]); + jest.spyOn(pinnedEventHooks, "useSortedFetchedPinnedEvents").mockReturnValue([event]); + + const { asFragment } = renderBanner(); + expect(screen.getByTestId("banner-message")).toHaveTextContent(`${label}: ${body}`); + expect(asFragment()).toMatchSnapshot(); + }); + + it("should display display a poll event", async () => { + const event = makePollStartEvent("Alice?", userId); + jest.spyOn(pinnedEventHooks, "usePinnedEvents").mockReturnValue([event.getId()!]); + jest.spyOn(pinnedEventHooks, "useSortedFetchedPinnedEvents").mockReturnValue([event]); + + const { asFragment } = renderBanner(); + expect(screen.getByTestId("banner-message")).toHaveTextContent("Poll: Alice?"); + expect(asFragment()).toMatchSnapshot(); + }); + describe("Right button", () => { beforeEach(() => { jest.spyOn(pinnedEventHooks, "usePinnedEvents").mockReturnValue([event1.getId()!, event2.getId()!]); diff --git a/test/components/views/rooms/__snapshots__/PinnedMessageBanner-test.tsx.snap b/test/components/views/rooms/__snapshots__/PinnedMessageBanner-test.tsx.snap index 90b1efb6351..bc733146ba8 100644 --- a/test/components/views/rooms/__snapshots__/PinnedMessageBanner-test.tsx.snap +++ b/test/components/views/rooms/__snapshots__/PinnedMessageBanner-test.tsx.snap @@ -1,5 +1,52 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[` should display display a poll event 1`] = ` + +
+ +
+
+`; + exports[` should display the last message when the pinned event array changed 1`] = `
should display the last message when the pinned
Third pinned message @@ -69,6 +117,194 @@ exports[` should display the last message when the pinned
`; +exports[` should display the m.audio event type 1`] = ` + +
+ +
+
+`; + +exports[` should display the m.file event type 1`] = ` + +
+ +
+
+`; + +exports[` should display the m.image event type 1`] = ` + +
+ +
+
+`; + +exports[` should display the m.video event type 1`] = ` + +
+ +
+
+`; + exports[` should render 2 pinned event 1`] = `
should render 2 pinned event 1`] = `
Second pinned message @@ -185,6 +422,7 @@ exports[` should render 4 pinned event 1`] = ` Fourth pinned message @@ -233,6 +471,7 @@ exports[` should render a single pinned event 1`] = ` /> First pinned message