Add full coverage for previous commit

This commit is contained in:
Cadence Ember 2023-11-23 16:41:32 +13:00
parent 8d452102d5
commit 9158eb2476
3 changed files with 47 additions and 1 deletions

View file

@ -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
}

View file

@ -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: <a href="https://discord.com/channels/111/222/333">https://discord.com/channels/111/222/333</a> [event is from another server]'
+ ' <a href="https://canary.discordapp.com/channels/444/555/666">https://canary.discordapp.com/channels/444/555/666</a> [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, [{