From 9158eb2476d3585204c9ec403a553e702609b983 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Thu, 23 Nov 2023 16:41:32 +1300 Subject: [PATCH] Add full coverage for previous commit --- d2m/converters/message-to-event.js | 4 +++- d2m/converters/message-to-event.test.js | 13 +++++++++++ test/data.js | 31 +++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/d2m/converters/message-to-event.js b/d2m/converters/message-to-event.js index b9e13dd..24c7f2d 100644 --- a/d2m/converters/message-to-event.js +++ b/d2m/converters/message-to-event.js @@ -268,6 +268,7 @@ async function messageToEvent(message, guild, options = {}, di) { * @param {string} content Partial or complete Discord message content */ async function transformContentMessageLinks(content) { + let offset = 0 for (const match of [...content.matchAll(/https:\/\/(?:ptb\.|canary\.|www\.)?discord(?:app)?\.com\/channels\/([0-9]+)\/([0-9]+)\/([0-9]+)/g)]) { assert(typeof match.index === "number") const channelID = match[2] @@ -286,7 +287,8 @@ async function messageToEvent(message, guild, options = {}, di) { } else { result = `${match[0]} [event is from another server]` } - content = content.slice(0, match.index) + result + content.slice(match.index + match[0].length) + content = content.slice(0, match.index + offset) + result + content.slice(match.index + match[0].length + offset) + offset += result.length - match[0].length } return content } diff --git a/d2m/converters/message-to-event.test.js b/d2m/converters/message-to-event.test.js index 980b1f5..f3ac895 100644 --- a/d2m/converters/message-to-event.test.js +++ b/d2m/converters/message-to-event.test.js @@ -136,6 +136,19 @@ test("message2event: message link that OOYE doesn't know about", async t => { t.equal(called, 1, "getEventForTimestamp should be called once") }) +test("message2event: message link from another server", async t => { + const events = await messageToEvent(data.message.message_link_from_another_server, data.guild.general) + t.deepEqual(events, [{ + $type: "m.room.message", + "m.mentions": {}, + msgtype: "m.text", + body: "Neither of these servers are known to OOYE: https://discord.com/channels/111/222/333 [event is from another server] https://canary.discordapp.com/channels/444/555/666 [event is from another server]", + format: "org.matrix.custom.html", + formatted_body: 'Neither of these servers are known to OOYE: https://discord.com/channels/111/222/333 [event is from another server]' + + ' https://canary.discordapp.com/channels/444/555/666 [event is from another server]' + }]) +}) + test("message2event: attachment with no content", async t => { const events = await messageToEvent(data.message.attachment_no_content, data.guild.general, {}) t.deepEqual(events, [{ diff --git a/test/data.js b/test/data.js index a7154b4..648c2c8 100644 --- a/test/data.js +++ b/test/data.js @@ -603,6 +603,37 @@ module.exports = { flags: 0, components: [] }, + message_link_from_another_server: { + id: "1160824382755708948", + type: 0, + content: "Neither of these servers are known to OOYE: https://discord.com/channels/111/222/333 https://canary.discordapp.com/channels/444/555/666", + channel_id: "112760669178241024", + author: { + id: "271237147401045000", + username: "jinx", + avatar: "a0ba563c16aff137289f67f38545807f", + discriminator: "0", + public_flags: 0, + premium_type: 0, + flags: 0, + banner: null, + accent_color: null, + global_name: "Jinx", + avatar_decoration_data: null, + banner_color: null + }, + attachments: [], + embeds: [], + mentions: [], + mention_roles: [], + pinned: false, + mention_everyone: false, + tts: false, + timestamp: '2023-10-09T06:21:39.923000+00:00', + edited_timestamp: null, + flags: 0, + components: [] + }, simple_written_at_mention_for_matrix: { id: "1159030564049915915", type: 0,