Test that pinned messages reflect edits correctly (#7960)
* Hide unpinnable pinned messages in more cases Signed-off-by: Robin Townsend <robin@robin.town> * Fix typo Signed-off-by: Robin Townsend <robin@robin.town> * Test that unpinnable pinned messages get hidden Signed-off-by: Robin Townsend <robin@robin.town> * Fix cli.relations error in test Signed-off-by: Robin Townsend <robin@robin.town> * Use event: true shortcut when calling mkEvent Signed-off-by: Robin Townsend <robin@robin.town> * Use mockResolvedValue instead of mockReturnValue for async mock Signed-off-by: Robin Townsend <robin@robin.town> * Actually mock redacted messages correctly Signed-off-by: Robin Townsend <robin@robin.town> * Ensure that panel is updated before assertions are made Signed-off-by: Robin Townsend <robin@robin.town> * Test that pinned messages reflect edits correctly Signed-off-by: Robin Townsend <robin@robin.town> * Fix warning about missing date Signed-off-by: Robin Townsend <robin@robin.town> * Move calls to update out of act They don't need to be there. Signed-off-by: Robin Townsend <robin@robin.town> * Move calls to update out of act They don't need to be there. Signed-off-by: Robin Townsend <robin@robin.town> * Fix lint Signed-off-by: Robin Townsend <robin@robin.town>
This commit is contained in:
parent
c42ef0de2a
commit
8a7ffb4f90
2 changed files with 51 additions and 4 deletions
|
@ -18,10 +18,16 @@ import React from "react";
|
||||||
import { mount } from "enzyme";
|
import { mount } from "enzyme";
|
||||||
import { act } from "react-dom/test-utils";
|
import { act } from "react-dom/test-utils";
|
||||||
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
|
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 "../../../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 { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
|
||||||
import _PinnedMessagesCard from "../../../../src/components/views/right_panel/PinnedMessagesCard";
|
import _PinnedMessagesCard from "../../../../src/components/views/right_panel/PinnedMessagesCard";
|
||||||
import PinnedEventTile from "../../../../src/components/views/rooms/PinnedEventTile";
|
import PinnedEventTile from "../../../../src/components/views/rooms/PinnedEventTile";
|
||||||
|
@ -35,7 +41,7 @@ describe("<PinnedMessagesCard />", () => {
|
||||||
|
|
||||||
const mkRoom = (localPins: MatrixEvent[], nonLocalPins: MatrixEvent[]) => {
|
const mkRoom = (localPins: MatrixEvent[], nonLocalPins: MatrixEvent[]) => {
|
||||||
const pins = [...localPins, ...nonLocalPins];
|
const pins = [...localPins, ...nonLocalPins];
|
||||||
const room = mkStubRoom();
|
const room = mkStubRoom("!room:example.org");
|
||||||
|
|
||||||
// Insert pin IDs into room state
|
// Insert pin IDs into room state
|
||||||
const pinState = mkEvent({
|
const pinState = mkEvent({
|
||||||
|
@ -97,4 +103,45 @@ describe("<PinnedMessagesCard />", () => {
|
||||||
pins.update();
|
pins.update();
|
||||||
expect(pins.find(PinnedEventTile).length).toBe(0);
|
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(<PinnedMessagesCard room={mkRoom([], [pin])} onClose={() => {}} />);
|
||||||
|
// 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!");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -171,7 +171,7 @@ export function mkEvent(opts: MakeEventProps): MatrixEvent {
|
||||||
content: opts.content,
|
content: opts.content,
|
||||||
prev_content: opts.prev_content,
|
prev_content: opts.prev_content,
|
||||||
event_id: "$" + Math.random() + "-" + Math.random(),
|
event_id: "$" + Math.random() + "-" + Math.random(),
|
||||||
origin_server_ts: opts.ts,
|
origin_server_ts: opts.ts ?? 0,
|
||||||
unsigned: opts.unsigned,
|
unsigned: opts.unsigned,
|
||||||
};
|
};
|
||||||
if (opts.skey) {
|
if (opts.skey) {
|
||||||
|
|
Loading…
Reference in a new issue