From 8a7ffb4f90c3a2cbb6a62c9ce3c49dbd3612a044 Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 3 Mar 2022 12:20:13 -0500 Subject: [PATCH] Test that pinned messages reflect edits correctly (#7960) * Hide unpinnable pinned messages in more cases Signed-off-by: Robin Townsend * Fix typo Signed-off-by: Robin Townsend * Test that unpinnable pinned messages get hidden Signed-off-by: Robin Townsend * Fix cli.relations error in test Signed-off-by: Robin Townsend * Use event: true shortcut when calling mkEvent Signed-off-by: Robin Townsend * Use mockResolvedValue instead of mockReturnValue for async mock Signed-off-by: Robin Townsend * Actually mock redacted messages correctly Signed-off-by: Robin Townsend * Ensure that panel is updated before assertions are made Signed-off-by: Robin Townsend * Test that pinned messages reflect edits correctly Signed-off-by: Robin Townsend * Fix warning about missing date Signed-off-by: Robin Townsend * Move calls to update out of act They don't need to be there. Signed-off-by: Robin Townsend * Move calls to update out of act They don't need to be there. Signed-off-by: Robin Townsend * Fix lint Signed-off-by: Robin Townsend --- .../right_panel/PinnedMessagesCard-test.tsx | 53 +++++++++++++++++-- test/test-utils/test-utils.ts | 2 +- 2 files changed, 51 insertions(+), 4 deletions(-) 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) {