1
0
mirror of https://github.com/element-hq/element-web.git synced 2025-08-05 05:21:16 +03:00
Files
element-web/test/unit-tests/Reply-test.ts
David Langley 69ee8fd96a Change License: AGPL + Element Commercial (#28856)
* Add commercial licence and update config files

* Update license in headers

* Revert "Update license in headers"

This reverts commit 7ed7949485.

* Update only spdx id

* Remove LicenseRef- from package.json

LicenseRef- no longer allowed in npm v3 package.json
This fixes the warning in the logs and failing build check.
2025-01-06 11:18:54 +00:00

120 lines
3.7 KiB
TypeScript

/*
Copyright 2024 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/
import { Room } from "matrix-js-sdk/src/matrix";
import { getParentEventId, shouldDisplayReply, stripHTMLReply, stripPlainReply } from "../../src/utils/Reply";
import { mkEvent, stubClient } from "../test-utils";
// don't litter test console with logs
jest.mock("matrix-js-sdk/src/logger");
describe("Reply", () => {
describe("getParentEventId", () => {
it("returns undefined if given a falsey value", async () => {
expect(getParentEventId()).toBeUndefined();
});
it("returns undefined if given a redacted event", async () => {
const event = mkEvent({
event: true,
type: "m.room.message",
user: "@user1:server",
room: "!room1:server",
content: {},
});
event.makeRedacted(event, new Room(event.getRoomId()!, stubClient(), event.getSender()!));
expect(getParentEventId(event)).toBeUndefined();
});
it("returns undefined if the given event is not a reply", async () => {
const event = mkEvent({
event: true,
type: "m.room.message",
user: "@user1:server",
room: "!room1:server",
content: {},
});
expect(getParentEventId(event)).toBeUndefined();
});
it("returns id of the event being replied to", async () => {
const event = mkEvent({
event: true,
type: "m.room.message",
user: "@user1:server",
room: "!room1:server",
content: {
"m.relates_to": {
"m.in_reply_to": {
event_id: "$event1",
},
},
},
});
expect(getParentEventId(event)).toBe("$event1");
});
});
describe("stripPlainReply", () => {
it("Removes leading quotes until the first blank line", () => {
expect(
stripPlainReply(
`
> This is part
> of the quote
But this is not
`.trim(),
),
).toBe("But this is not");
});
});
describe("stripHTMLReply", () => {
it("Removes <mx-reply> from the input", () => {
expect(
stripHTMLReply(`
<mx-reply>
This is part
of the quote
</mx-reply>
But this is not
`).trim(),
).toBe("But this is not");
});
});
describe("shouldDisplayReply", () => {
it("Returns false for redacted events", () => {
const event = mkEvent({
event: true,
type: "m.room.message",
user: "@user1:server",
room: "!room1:server",
content: {},
});
event.makeRedacted(event, new Room(event.getRoomId()!, stubClient(), event.getSender()!));
expect(shouldDisplayReply(event)).toBe(false);
});
it("Returns false for non-reply events", () => {
const event = mkEvent({
event: true,
type: "m.room.message",
user: "@user1:server",
room: "!room1:server",
content: {},
});
expect(shouldDisplayReply(event)).toBe(false);
});
});
});