diff --git a/tests/messages/add_reaction.ts b/tests/messages/add_reaction.ts new file mode 100644 index 000000000..304ce9869 --- /dev/null +++ b/tests/messages/add_reaction.ts @@ -0,0 +1,56 @@ +import { + addReaction, + cache, + delay, + DiscordReaction, + sendMessage, +} from "../../mod.ts"; +import { defaultTestOptions, tempData } from "../ws/start_bot.ts"; +import { assertEquals, assertExists } from "../deps.ts"; + +async function ifItFailsBlameWolf(type: "getter" | "raw") { + const message = await sendMessage(tempData.channelId, "Hello World!"); + + // Assertions + assertExists(message); + + // Delay the execution by 5 seconds to allow MESSAGE_CREATE event to be processed + await delay(5000); + + if (!cache.messages.has(message.id)) { + throw new Error( + "The message seemed to be sent but it was not cached.", + ); + } + + if (type === "raw") { + await addReaction(message.channelId, message.id, "❤"); + } else { + await message.addReaction("❤"); + } + + await delay(5000); + + assertEquals( + await cache.messages.get(message.id)?.reactions?.filter(( + reaction: DiscordReaction, + ) => reaction.emoji?.name === "❤").length, + 1, + ); +} + +Deno.test({ + name: "[message] add a reaction", + async fn() { + await ifItFailsBlameWolf("raw"); + }, + ...defaultTestOptions, +}); + +Deno.test({ + name: "[message] message.addReaction()", + async fn() { + await ifItFailsBlameWolf("getter"); + }, + ...defaultTestOptions, +}); diff --git a/tests/mod.ts b/tests/mod.ts index 141ec698e..48e24cd7c 100644 --- a/tests/mod.ts +++ b/tests/mod.ts @@ -16,6 +16,7 @@ import "./channels/create_channel.ts"; import "./channels/delete_channel.ts"; // Messages tests +import "./messages/add_reaction.ts"; import "./messages/create_message.ts"; import "./messages/delete_message.ts"; import "./messages/edit_message.ts"; diff --git a/tests/ws/start_bot.ts b/tests/ws/start_bot.ts index 13a8bef54..c614d8ae1 100644 --- a/tests/ws/start_bot.ts +++ b/tests/ws/start_bot.ts @@ -33,7 +33,12 @@ Deno.test({ await startBot({ token, - intents: ["GUILD_MESSAGES", "GUILDS"], + intents: [ + "GUILD_MESSAGES", + "GUILDS", + "GUILD_EMOJIS", + "GUILD_MESSAGE_REACTIONS", + ], }); // Delay the execution by 5 seconds