diff --git a/test/components/views/right_panel/PinnedMessagesCard-test.tsx b/test/components/views/right_panel/PinnedMessagesCard-test.tsx
index 3c0fb73aa1..511db66086 100644
--- a/test/components/views/right_panel/PinnedMessagesCard-test.tsx
+++ b/test/components/views/right_panel/PinnedMessagesCard-test.tsx
@@ -18,10 +18,16 @@ import React from "react";
import { mount } from "enzyme";
import { act } from "react-dom/test-utils";
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
-import { EventType } from "matrix-js-sdk/src/@types/event";
+import { EventType, RelationType, MsgType } from "matrix-js-sdk/src/@types/event";
import "../../../skinned-sdk";
-import { stubClient, wrapInMatrixClientContext, mkStubRoom, mkEvent } from "../../../test-utils";
+import {
+ stubClient,
+ wrapInMatrixClientContext,
+ mkStubRoom,
+ mkEvent,
+ mkMessage,
+} from "../../../test-utils";
import { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
import _PinnedMessagesCard from "../../../../src/components/views/right_panel/PinnedMessagesCard";
import PinnedEventTile from "../../../../src/components/views/rooms/PinnedEventTile";
@@ -35,7 +41,7 @@ describe("", () => {
const mkRoom = (localPins: MatrixEvent[], nonLocalPins: MatrixEvent[]) => {
const pins = [...localPins, ...nonLocalPins];
- const room = mkStubRoom();
+ const room = mkStubRoom("!room:example.org");
// Insert pin IDs into room state
const pinState = mkEvent({
@@ -97,4 +103,45 @@ describe("", () => {
pins.update();
expect(pins.find(PinnedEventTile).length).toBe(0);
});
+
+ it("accounts for edits", async () => {
+ const pin = mkMessage({
+ event: true,
+ room: "!room:example.org",
+ user: "@alice:example.org",
+ msg: "Hello!",
+ });
+ cli.relations.mockResolvedValue({
+ events: [mkEvent({
+ event: true,
+ type: EventType.RoomMessage,
+ room: "!room:example.org",
+ user: "@alice:example.org",
+ content: {
+ "msgtype": MsgType.Text,
+ "body": " * Hello again!",
+ "m.new_content": {
+ msgtype: MsgType.Text,
+ body: "Hello again!",
+ },
+ "m.relates_to": {
+ rel_type: RelationType.Replace,
+ event_id: pin.getId(),
+ },
+ },
+ })],
+ });
+
+ let pins;
+ await act(async () => {
+ pins = mount( {}} />);
+ // Wait a tick for state updates
+ await new Promise(resolve => setImmediate(resolve));
+ });
+ pins.update();
+
+ const pinTile = pins.find(PinnedEventTile);
+ expect(pinTile.length).toBe(1);
+ expect(pinTile.find(".mx_EventTile_body").text()).toEqual("Hello again!");
+ });
});
diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts
index 747aa9ab1b..0aa4dbdc34 100644
--- a/test/test-utils/test-utils.ts
+++ b/test/test-utils/test-utils.ts
@@ -171,7 +171,7 @@ export function mkEvent(opts: MakeEventProps): MatrixEvent {
content: opts.content,
prev_content: opts.prev_content,
event_id: "$" + Math.random() + "-" + Math.random(),
- origin_server_ts: opts.ts,
+ origin_server_ts: opts.ts ?? 0,
unsigned: opts.unsigned,
};
if (opts.skey) {