100% edit-to-changes code coverage
This commit is contained in:
parent
8c4e16e255
commit
7780ee806a
5 changed files with 74 additions and 4 deletions
|
@ -24,7 +24,7 @@ async function editMessage(message, guild) {
|
||||||
await api.sendEvent(roomID, eventType, newContentWithoutType, senderMxid)
|
await api.sendEvent(roomID, eventType, newContentWithoutType, senderMxid)
|
||||||
// Ensure the database is up to date.
|
// Ensure the database is up to date.
|
||||||
// The columns are event_id, event_type, event_subtype, message_id, channel_id, part, source. Only event_subtype could potentially be changed by a replacement event.
|
// The columns are event_id, event_type, event_subtype, message_id, channel_id, part, source. Only event_subtype could potentially be changed by a replacement event.
|
||||||
const subtype = newContentWithoutType.msgtype ?? null
|
const subtype = newContentWithoutType.msgtype || null
|
||||||
db.prepare("UPDATE event_message SET event_subtype = ? WHERE event_id = ?").run(subtype, oldID)
|
db.prepare("UPDATE event_message SET event_subtype = ? WHERE event_id = ?").run(subtype, oldID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ async function editToChanges(message, guild, api) {
|
||||||
|
|
||||||
const roomID = db.prepare("SELECT room_id FROM channel_room WHERE channel_id = ?").pluck().get(message.channel_id)
|
const roomID = db.prepare("SELECT room_id FROM channel_room WHERE channel_id = ?").pluck().get(message.channel_id)
|
||||||
/** @type {string?} */
|
/** @type {string?} */
|
||||||
let senderMxid = db.prepare("SELECT mxid FROM sim WHERE discord_id = ?").pluck().get(message.author.id) ?? null
|
let senderMxid = db.prepare("SELECT mxid FROM sim WHERE discord_id = ?").pluck().get(message.author.id) || null
|
||||||
if (senderMxid) {
|
if (senderMxid) {
|
||||||
const senderIsInRoom = db.prepare("SELECT * FROM sim_member WHERE room_id = ? and mxid = ?").get(roomID, senderMxid)
|
const senderIsInRoom = db.prepare("SELECT * FROM sim_member WHERE room_id = ? and mxid = ?").get(roomID, senderMxid)
|
||||||
if (!senderIsInRoom) {
|
if (!senderIsInRoom) {
|
||||||
|
@ -66,7 +66,7 @@ async function editToChanges(message, guild, api) {
|
||||||
// Find a new event to pair it with...
|
// Find a new event to pair it with...
|
||||||
for (let i = 0; i < oldEventRows.length; i++) {
|
for (let i = 0; i < oldEventRows.length; i++) {
|
||||||
const olde = oldEventRows[i]
|
const olde = oldEventRows[i]
|
||||||
if (olde.event_type === newe.$type && olde.event_subtype === (newe.msgtype ?? null)) { // The spec does allow subtypes to change, so I can change this condition later if I want to
|
if (olde.event_type === newe.$type && olde.event_subtype === (newe.msgtype || null)) { // The spec does allow subtypes to change, so I can change this condition later if I want to
|
||||||
// Found one!
|
// Found one!
|
||||||
// Set up the pairing
|
// Set up the pairing
|
||||||
eventsToReplace.push({
|
eventsToReplace.push({
|
||||||
|
|
|
@ -103,6 +103,32 @@ test("edit2changes: add caption back to that image", async t => {
|
||||||
t.deepEqual(eventsToReplace, [])
|
t.deepEqual(eventsToReplace, [])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("edit2changes: stickers and attachments are not changed, only the content can be edited", async t => {
|
||||||
|
const {eventsToRedact, eventsToReplace, eventsToSend} = await editToChanges(data.message_update.edited_content_with_sticker_and_attachments, data.guild.general, {})
|
||||||
|
t.deepEqual(eventsToRedact, [])
|
||||||
|
t.deepEqual(eventsToSend, [])
|
||||||
|
t.deepEqual(eventsToReplace, [{
|
||||||
|
oldID: "$lnAF9IosAECTnlv9p2e18FG8rHn-JgYKHEHIh5qdFv4",
|
||||||
|
newContent: {
|
||||||
|
$type: "m.room.message",
|
||||||
|
msgtype: "m.text",
|
||||||
|
body: "* only the content can be edited",
|
||||||
|
"m.mentions": {},
|
||||||
|
// *** Replaced With: ***
|
||||||
|
"m.new_content": {
|
||||||
|
msgtype: "m.text",
|
||||||
|
body: "only the content can be edited",
|
||||||
|
"m.mentions": {}
|
||||||
|
},
|
||||||
|
"m.relates_to": {
|
||||||
|
rel_type: "m.replace",
|
||||||
|
event_id: "$lnAF9IosAECTnlv9p2e18FG8rHn-JgYKHEHIh5qdFv4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
test("edit2changes: edit of reply to skull webp attachment with content", async t => {
|
test("edit2changes: edit of reply to skull webp attachment with content", async t => {
|
||||||
const {eventsToRedact, eventsToReplace, eventsToSend} = await editToChanges(data.message_update.edit_of_reply_to_skull_webp_attachment_with_content, data.guild.general, {})
|
const {eventsToRedact, eventsToReplace, eventsToSend} = await editToChanges(data.message_update.edit_of_reply_to_skull_webp_attachment_with_content, data.guild.general, {})
|
||||||
t.deepEqual(eventsToRedact, [])
|
t.deepEqual(eventsToRedact, [])
|
||||||
|
|
|
@ -83,7 +83,10 @@ INSERT INTO event_message (event_id, event_type, event_subtype, message_id, chan
|
||||||
('$vgTKOR5ZTYNMKaS7XvgEIDaOWZtVCEyzLLi5Pc5Gz4M', 'm.room.message', 'm.text', '1128084851279536279', '112760669178241024', 0, 1),
|
('$vgTKOR5ZTYNMKaS7XvgEIDaOWZtVCEyzLLi5Pc5Gz4M', 'm.room.message', 'm.text', '1128084851279536279', '112760669178241024', 0, 1),
|
||||||
('$YUJFa5j0ZJe7PUvD2DykRt9g51RoadUEYmuJLdSEbJ0', 'm.room.message', 'm.image', '1128084851279536279', '112760669178241024', 1, 1),
|
('$YUJFa5j0ZJe7PUvD2DykRt9g51RoadUEYmuJLdSEbJ0', 'm.room.message', 'm.image', '1128084851279536279', '112760669178241024', 1, 1),
|
||||||
('$oLyUTyZ_7e_SUzGNWZKz880ll9amLZvXGbArJCKai2Q', 'm.room.message', 'm.text', '1128084748338741392', '112760669178241024', 0, 1),
|
('$oLyUTyZ_7e_SUzGNWZKz880ll9amLZvXGbArJCKai2Q', 'm.room.message', 'm.text', '1128084748338741392', '112760669178241024', 0, 1),
|
||||||
('$FchUVylsOfmmbj-VwEs5Z9kY49_dt2zd0vWfylzy5Yo', 'm.room.message', 'm.text', '1143121514925928541', '1100319550446252084', 0, 1);
|
('$FchUVylsOfmmbj-VwEs5Z9kY49_dt2zd0vWfylzy5Yo', 'm.room.message', 'm.text', '1143121514925928541', '1100319550446252084', 0, 1),
|
||||||
|
('$lnAF9IosAECTnlv9p2e18FG8rHn-JgYKHEHIh5qdFv4', 'm.room.message', 'm.text', '1106366167788044450', '122155380120748034', 0, 1),
|
||||||
|
('$Ijf1MFCD39ktrNHxrA-i2aKoRWNYdAV2ZXYQeiZIgEU', 'm.room.message', 'm.image', '1106366167788044450', '122155380120748034', 0, 0),
|
||||||
|
('$f9cjKiacXI9qPF_nUAckzbiKnJEi0LM399kOkhdd8f8', 'm.sticker', NULL, '1106366167788044450', '122155380120748034', 0, 0);
|
||||||
|
|
||||||
INSERT INTO file (discord_url, mxc_url) VALUES
|
INSERT INTO file (discord_url, mxc_url) VALUES
|
||||||
('https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png', 'mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM'),
|
('https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png', 'mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM'),
|
||||||
|
|
41
test/data.js
41
test/data.js
|
@ -1250,6 +1250,47 @@ module.exports = {
|
||||||
tts: false,
|
tts: false,
|
||||||
type: 0
|
type: 0
|
||||||
},
|
},
|
||||||
|
edited_content_with_sticker_and_attachments: {
|
||||||
|
id: "1106366167788044450",
|
||||||
|
type: 0,
|
||||||
|
content: "only the content can be edited",
|
||||||
|
channel_id: "122155380120748034",
|
||||||
|
author: {
|
||||||
|
id: "113340068197859328",
|
||||||
|
username: "Cookie 🍪",
|
||||||
|
global_name: null,
|
||||||
|
display_name: null,
|
||||||
|
avatar: "b48302623a12bc7c59a71328f72ccb39",
|
||||||
|
discriminator: "7766",
|
||||||
|
public_flags: 128,
|
||||||
|
avatar_decoration: null
|
||||||
|
},
|
||||||
|
attachments: [{
|
||||||
|
id: "1106366167486038016",
|
||||||
|
filename: "image.png",
|
||||||
|
size: 127373,
|
||||||
|
url: "https://cdn.discordapp.com/attachments/122155380120748034/1106366167486038016/image.png",
|
||||||
|
proxy_url: "https://media.discordapp.net/attachments/122155380120748034/1106366167486038016/image.png",
|
||||||
|
width: 333,
|
||||||
|
height: 287,
|
||||||
|
content_type: "image/png"
|
||||||
|
}],
|
||||||
|
embeds: [],
|
||||||
|
mentions: [],
|
||||||
|
mention_roles: [],
|
||||||
|
pinned: false,
|
||||||
|
mention_everyone: false,
|
||||||
|
tts: false,
|
||||||
|
timestamp: "2023-05-11T23:44:09.690000+00:00",
|
||||||
|
edited_timestamp: "2023-05-11T23:44:19.690000+00:00",
|
||||||
|
flags: 0,
|
||||||
|
components: [],
|
||||||
|
sticker_items: [{
|
||||||
|
id: "1106323941183717586",
|
||||||
|
format_type: 1,
|
||||||
|
name: "pomu puff"
|
||||||
|
}]
|
||||||
|
},
|
||||||
edit_of_reply_to_skull_webp_attachment_with_content: {
|
edit_of_reply_to_skull_webp_attachment_with_content: {
|
||||||
type: 19,
|
type: 19,
|
||||||
tts: false,
|
tts: false,
|
||||||
|
|
Loading…
Reference in a new issue