Improve types for sendEvent
(#12335)
This commit is contained in:
parent
4941327c78
commit
ef2bd7ae04
26 changed files with 209 additions and 99 deletions
|
@ -18,6 +18,7 @@ import React from "react";
|
|||
import { fireEvent, render, screen } from "@testing-library/react";
|
||||
import userEvent from "@testing-library/user-event";
|
||||
import { Room } from "matrix-js-sdk/src/matrix";
|
||||
import { ReplacementEvent, RoomMessageEventContent } from "matrix-js-sdk/src/types";
|
||||
|
||||
import EditMessageComposerWithMatrixClient, {
|
||||
createEditContent,
|
||||
|
@ -296,11 +297,12 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// both content.mentions and new_content.mentions are empty
|
||||
expect(messageContent["m.mentions"]).toEqual({});
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({});
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({});
|
||||
});
|
||||
|
||||
it("should retain mentions in the original message that are not removed by the edit", async () => {
|
||||
|
@ -312,12 +314,13 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// no new mentions were added, so nothing in top level mentions
|
||||
expect(messageContent["m.mentions"]).toEqual({});
|
||||
// bob is still mentioned, charlie removed
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({
|
||||
user_ids: ["@bob:server.org"],
|
||||
});
|
||||
});
|
||||
|
@ -331,12 +334,13 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// no new mentions were added, so nothing in top level mentions
|
||||
expect(messageContent["m.mentions"]).toEqual({});
|
||||
// bob is not longer mentioned in the edited message, so empty mentions in new_content
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({});
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({});
|
||||
});
|
||||
|
||||
it("should add mentions that were added in the edit", async () => {
|
||||
|
@ -352,13 +356,14 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// new mention in the edit
|
||||
expect(messageContent["m.mentions"]).toEqual({
|
||||
user_ids: ["@dan:server.org"],
|
||||
});
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({
|
||||
user_ids: ["@dan:server.org"],
|
||||
});
|
||||
});
|
||||
|
@ -377,14 +382,15 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// new mention in the edit
|
||||
expect(messageContent["m.mentions"]).toEqual({
|
||||
user_ids: ["@dan:server.org"],
|
||||
});
|
||||
// all mentions in the edited version of the event
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({
|
||||
user_ids: ["@bob:server.org", "@dan:server.org"],
|
||||
});
|
||||
});
|
||||
|
@ -454,12 +460,13 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// no new mentions from edit
|
||||
expect(messageContent["m.mentions"]).toEqual({});
|
||||
// edited reply still mentions the parent event sender
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({
|
||||
user_ids: [originalEvent.getSender()],
|
||||
});
|
||||
});
|
||||
|
@ -475,7 +482,8 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// new mention in edit
|
||||
expect(messageContent["m.mentions"]).toEqual({
|
||||
|
@ -483,7 +491,7 @@ describe("<EditMessageComposer/>", () => {
|
|||
});
|
||||
// edited reply still mentions the parent event sender
|
||||
// plus new mention @dan
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({
|
||||
user_ids: [originalEvent.getSender(), "@dan:server.org"],
|
||||
});
|
||||
});
|
||||
|
@ -496,13 +504,14 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// no mentions in edit
|
||||
expect(messageContent["m.mentions"]).toEqual({});
|
||||
// edited reply still mentions the parent event sender
|
||||
// existing @bob mention removed
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({
|
||||
user_ids: [originalEvent.getSender()],
|
||||
});
|
||||
});
|
||||
|
@ -536,12 +545,13 @@ describe("<EditMessageComposer/>", () => {
|
|||
|
||||
fireEvent.click(screen.getByText("Save"));
|
||||
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2];
|
||||
const messageContent = mockClient.sendMessage.mock.calls[0][2] as RoomMessageEventContent &
|
||||
ReplacementEvent<RoomMessageEventContent>;
|
||||
|
||||
// no mentions in edit
|
||||
expect(messageContent["m.mentions"]).toEqual({});
|
||||
// edited reply still mentions the parent event sender
|
||||
expect(messageContent["m.new_content"]["m.mentions"]).toEqual({
|
||||
expect(messageContent["m.new_content"]!["m.mentions"]).toEqual({
|
||||
user_ids: [originalEvent.getSender()],
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue