1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-06 12:02:40 +03:00

Isolate changes to Thread global into a single describe block (#3390)

This commit is contained in:
Andy Balaam
2023-05-25 12:45:47 +01:00
committed by GitHub
parent c0577c29c4
commit d1bfdca0c9

View File

@@ -206,85 +206,97 @@ describe("EventTimelineSet", () => {
expect(liveTimeline.getEvents().length).toStrictEqual(0); expect(liveTimeline.getEvents().length).toStrictEqual(0);
}); });
it("should allow edits to be added to thread timeline", async () => { describe("When the server supports threads", () => {
jest.spyOn(client, "supportsThreads").mockReturnValue(true); let previousThreadHasServerSideSupport: FeatureSupport;
jest.spyOn(client, "getEventMapper").mockReturnValue(eventMapperFor(client, {}));
Thread.hasServerSideSupport = FeatureSupport.Stable;
const sender = "@alice:matrix.org"; beforeAll(() => {
previousThreadHasServerSideSupport = Thread.hasServerSideSupport;
const root = utils.mkEvent({ Thread.hasServerSideSupport = FeatureSupport.Stable;
event: true,
content: {
body: "Thread root",
},
type: EventType.RoomMessage,
sender,
}); });
room.addLiveEvents([root]);
const threadReply = utils.mkEvent({ afterAll(() => {
event: true, Thread.hasServerSideSupport = previousThreadHasServerSideSupport;
content: { });
"body": "Thread reply",
"m.relates_to": { it("should allow edits to be added to thread timeline", async () => {
event_id: root.getId()!, jest.spyOn(client, "supportsThreads").mockReturnValue(true);
rel_type: RelationType.Thread, jest.spyOn(client, "getEventMapper").mockReturnValue(eventMapperFor(client, {}));
const sender = "@alice:matrix.org";
const root = utils.mkEvent({
event: true,
content: {
body: "Thread root",
}, },
}, type: EventType.RoomMessage,
type: EventType.RoomMessage, sender,
sender, });
}); room.addLiveEvents([root]);
root.setUnsigned({ const threadReply = utils.mkEvent({
"m.relations": { event: true,
[RelationType.Thread]: { content: {
count: 1, "body": "Thread reply",
latest_event: { "m.relates_to": {
content: threadReply.getContent(), event_id: root.getId()!,
origin_server_ts: 5, rel_type: RelationType.Thread,
room_id: room.roomId,
sender,
type: EventType.RoomMessage,
event_id: threadReply.getId()!,
user_id: sender,
age: 1,
}, },
current_user_participated: true,
}, },
}, type: EventType.RoomMessage,
}); sender,
});
const editToThreadReply = utils.mkEvent({ root.setUnsigned({
event: true, "m.relations": {
content: { [RelationType.Thread]: {
"body": " * edit", count: 1,
"m.new_content": { latest_event: {
"body": "edit", content: threadReply.getContent(),
"msgtype": "m.text", origin_server_ts: 5,
"org.matrix.msc1767.text": "edit", room_id: room.roomId,
sender,
type: EventType.RoomMessage,
event_id: threadReply.getId()!,
user_id: sender,
age: 1,
},
current_user_participated: true,
},
}, },
"m.relates_to": { });
event_id: threadReply.getId()!,
rel_type: RelationType.Replace, const editToThreadReply = utils.mkEvent({
event: true,
content: {
"body": " * edit",
"m.new_content": {
"body": "edit",
"msgtype": "m.text",
"org.matrix.msc1767.text": "edit",
},
"m.relates_to": {
event_id: threadReply.getId()!,
rel_type: RelationType.Replace,
},
}, },
}, type: EventType.RoomMessage,
type: EventType.RoomMessage, sender,
sender, });
});
jest.spyOn(client, "paginateEventTimeline").mockImplementation(async () => { jest.spyOn(client, "paginateEventTimeline").mockImplementation(async () => {
thread.timelineSet.getLiveTimeline().addEvent(threadReply, { toStartOfTimeline: true }); thread.timelineSet.getLiveTimeline().addEvent(threadReply, { toStartOfTimeline: true });
return true; return true;
}); });
jest.spyOn(client, "relations").mockResolvedValue({ jest.spyOn(client, "relations").mockResolvedValue({
events: [], events: [],
}); });
const thread = room.createThread(root.getId()!, root, [threadReply, editToThreadReply], false); const thread = room.createThread(root.getId()!, root, [threadReply, editToThreadReply], false);
thread.once(RoomEvent.TimelineReset, () => { thread.once(RoomEvent.TimelineReset, () => {
const lastEvent = thread.timeline.at(-1)!; const lastEvent = thread.timeline.at(-1)!;
expect(lastEvent.getContent().body).toBe(" * edit"); expect(lastEvent.getContent().body).toBe(" * edit");
});
}); });
}); });