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`] = `
+
+
+
+
+
+
+
+
+
+ Poll:
+
+ Alice?
+
+
+
+
+
+
+`;
+
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`] = `
+
+
+
+
+
+
+
+
+
+ Audio:
+
+ Message with m.audio type
+
+
+
+
+
+
+`;
+
+exports[` should display the m.file event type 1`] = `
+
+
+
+
+
+
+
+
+
+ File:
+
+ Message with m.file type
+
+
+
+
+
+
+`;
+
+exports[` should display the m.image event type 1`] = `
+
+
+
+
+
+
+
+
+
+ Image:
+
+ Message with m.image type
+
+
+
+
+
+
+`;
+
+exports[` should display the m.video event type 1`] = `
+
+
+
+
+
+
+
+
+
+ Video:
+
+ Message with m.video type
+
+
+
+
+
+
+`;
+
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