From 337dc9fe4425c91e553a04ac4c6abcbd4394c609 Mon Sep 17 00:00:00 2001 From: TriForMine Date: Sun, 11 Apr 2021 13:51:30 +0200 Subject: [PATCH] tests: add reply and embed message test --- src/structures/message.ts | 4 +- tests/messages/create_message.ts | 82 ++++++++++++++++++++++++++++++-- 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/src/structures/message.ts b/src/structures/message.ts index 9095f4032..7bd6e485b 100644 --- a/src/structures/message.ts +++ b/src/structures/message.ts @@ -72,13 +72,13 @@ const baseMessage: Partial = { ? { content, mentions: { repliedUser: true }, - replyMessageId: this.id, + messageReference: { messageId: this.id }, failReplyIfNotExists: false, } : { ...content, mentions: { ...(content.allowedMentions || {}), repliedUser: true }, - replyMessageId: this.id, + messageReference: { messageId: this.id }, failReplyIfNotExists: content.messageReference?.failIfNotExists === true, }; diff --git a/tests/messages/create_message.ts b/tests/messages/create_message.ts index ad87e4e32..37838592a 100644 --- a/tests/messages/create_message.ts +++ b/tests/messages/create_message.ts @@ -1,11 +1,11 @@ import { defaultTestOptions, tempData } from "../ws/start_bot.ts"; -import { assertExists } from "../deps.ts"; +import {assertEquals, assertExists} from "../deps.ts"; import { cache } from "../../src/cache.ts"; import { sendMessage } from "../../src/helpers/messages/send_message.ts"; import { createChannel } from "../../src/helpers/channels/create_channel.ts"; import { delayUntil } from "../util/delay_until.ts"; -async function ifItFailsBlameWolf(type: "getter" | "raw") { +async function ifItFailsBlameWolf(type: "getter" | "raw", content: "string" | "embed" | "reply" = "string") { const channel = await createChannel(tempData.guildId, { name: "Discordeno-test", }); @@ -14,9 +14,43 @@ async function ifItFailsBlameWolf(type: "getter" | "raw") { // Wait few seconds for the channel create event to arrive and cache it await delayUntil(10000, () => cache.channels.has(channel.id)); + let messageContent: any = "Hello World!"; + let secondMessageId = undefined; + if (content === "embed") { + messageContent = { + content: "Hello World!", + embed: { + title: "Hello, Embed!", + description: "This is an embedded message.", + color: 0x41ebf4, + fields: [] + } + }; + } else if (content === "reply") { + const message = await sendMessage(channel.id, "Test Message"); + assertExists(channel); + // Wait few seconds for the channel create event to arrive and cache it + await delayUntil(10000, () => cache.messages.has(message.id)); + + secondMessageId = message.id; + + messageContent = { + content: "Hi", + allowedMentions: { + repliedUser: true + }, + messageReference: { + messageId: message.id, + channelId: channel.id, + guildId: tempData.guildId, + failIfNotExists: true + } + } + } + const message = type === "raw" - ? await sendMessage(channel.id, "Hello World!") - : await channel.send("Hello World!"); + ? await sendMessage(channel.id, messageContent) + : await channel.send(messageContent); // Assertions assertExists(message); @@ -27,6 +61,14 @@ async function ifItFailsBlameWolf(type: "getter" | "raw") { if (!cache.messages.has(message.id)) { throw new Error("The message seemed to be sent but it was not cached."); } + + if (content === "string") { + assertEquals(cache.messages.get(message.id)?.content, messageContent) + } else if (content === "embed") { + assertEquals(cache.messages.get(message.id)?.embeds?.length, 1); + } else { + assertEquals(cache.messages.get(message.id)?.messageReference.messageId, secondMessageId) + } } Deno.test({ @@ -44,3 +86,35 @@ Deno.test({ }, ...defaultTestOptions, }); + +Deno.test({ + name: "[message] send a new message with an embed", + async fn() { + await ifItFailsBlameWolf("raw", "embed"); + }, + ...defaultTestOptions, +}); + +Deno.test({ + name: "[message] channel.send() with an embed", + async fn() { + await ifItFailsBlameWolf("getter", "embed"); + }, + ...defaultTestOptions, +}); + +Deno.test({ + name: "[message] send a message with a reply", + async fn() { + await ifItFailsBlameWolf("raw", "reply"); + }, + ...defaultTestOptions, +}); + +Deno.test({ + name: "[message] channel.send() with a reply", + async fn() { + await ifItFailsBlameWolf("getter", "reply"); + }, + ...defaultTestOptions, +});