mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-04 09:50:07 +00:00
fix(test): migrate message related unit tests
This commit is contained in:
@@ -9,5 +9,8 @@ export async function getMessage(bot: Bot, channelId: bigint, id: bigint) {
|
||||
bot.constants.routes.CHANNEL_MESSAGE(channelId, id),
|
||||
);
|
||||
|
||||
// If the message does not exist
|
||||
if (!result?.id) return;
|
||||
|
||||
return bot.transformers.message(bot, result);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { Bot } from "../../bot.ts";
|
||||
import { DiscordMessage } from "../../types/discord.ts";
|
||||
import { Collection } from "../../util/collection.ts";
|
||||
import { hasProperty } from "../../util/utils.ts";
|
||||
|
||||
/** Fetches between 2-100 messages. Requires VIEW_CHANNEL and READ_MESSAGE_HISTORY */
|
||||
@@ -18,7 +19,10 @@ export async function getMessages(
|
||||
bot.constants.routes.CHANNEL_MESSAGES(channelId, options),
|
||||
);
|
||||
|
||||
return await Promise.all(result.map((res) => bot.transformers.message(bot, res)));
|
||||
return new Collection(result.map((res) => {
|
||||
const msg = bot.transformers.message(bot, res);
|
||||
return [msg.id, msg];
|
||||
}));
|
||||
}
|
||||
|
||||
/** https://discord.com/developers/docs/resources/channel#get-channel-messages-query-string-params */
|
||||
|
||||
106
tests/mod.ts
106
tests/mod.ts
@@ -1,19 +1,7 @@
|
||||
import enableCachePlugin from "../plugins/cache/mod.ts";
|
||||
import { ChannelTypes, createBot, createEventHandlers, startBot } from "../mod.ts";
|
||||
import { assertEquals, assertExists, dotenv } from "./deps.ts";
|
||||
import { deleteMessageWithoutReasonTest, deleteMessageWithReasonTest } from "./helpers/messages/deleteMessage.ts";
|
||||
import { getMessagesTest } from "./helpers/messages/getMessages.ts";
|
||||
import { deleteMessagesWithoutReasonTest, deleteMessagesWithReasonTest } from "./helpers/messages/deleteMessages.ts";
|
||||
import { delayUntil } from "./utils.ts";
|
||||
import {
|
||||
sendMessageWithComponents,
|
||||
sendMessageWithEmbedsTest,
|
||||
sendMessageWithTextTest,
|
||||
} from "./helpers/messages/sendMessage.ts";
|
||||
import { getMessageTest } from "./helpers/messages/getMessage.ts";
|
||||
import { editMessageTest } from "./helpers/messages/editMessage.ts";
|
||||
import { pinMessageTests } from "./helpers/messages/pin.ts";
|
||||
import { categoryChildrenTest } from "./helpers/channels/categoryChannels.ts";
|
||||
import { deleteChannelOverwriteTests } from "./helpers/channels/deleteChannelOverwrite.ts";
|
||||
import { editChannelTests } from "./helpers/channels/editChannel.ts";
|
||||
import { CACHED_COMMUNITY_GUILD_ID, sanitizeMode } from "./constants.ts";
|
||||
@@ -99,100 +87,6 @@ export const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "[message] send message with text",
|
||||
fn: async (t) => {
|
||||
await sendMessageWithTextTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] send message with embeds",
|
||||
fn: async (t) => {
|
||||
await sendMessageWithEmbedsTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] send message with components",
|
||||
fn: async (t) => {
|
||||
await sendMessageWithComponents(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] edit message",
|
||||
fn: async (t) => {
|
||||
await editMessageTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] delete message without a reason",
|
||||
fn: async (t) => {
|
||||
await deleteMessageWithoutReasonTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] delete message with a reason",
|
||||
fn: async (t) => {
|
||||
await deleteMessageWithReasonTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] delete messages without a reason",
|
||||
fn: async (t) => {
|
||||
await deleteMessagesWithoutReasonTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] delete messages with a reason",
|
||||
fn: async (t) => {
|
||||
await deleteMessagesWithReasonTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] fetch a message",
|
||||
fn: async (t) => {
|
||||
await getMessageTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[message] fetch messages",
|
||||
fn: async (t) => {
|
||||
await getMessagesTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "[message] pin a message",
|
||||
fn: async (t) => {
|
||||
await pinMessageTests(channel.id, message.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "[channel] send message with text",
|
||||
fn: async (t) => {
|
||||
await sendMessageWithTextTest(channel.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "[channel] filter all category channels",
|
||||
async fn(t) {
|
||||
await categoryChildrenTest(guild.id);
|
||||
},
|
||||
...sanitizeMode,
|
||||
});
|
||||
Deno.test({
|
||||
name: "[channel] delete a channel overwrite",
|
||||
async fn(t) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ChannelTypes } from "../../../mod.ts";
|
||||
import { ButtonStyles, ChannelTypes, MessageComponentTypes } from "../../../mod.ts";
|
||||
import { assertEquals, assertExists, assertNotEquals } from "../../deps.ts";
|
||||
import { loadBot } from "../../mod.ts";
|
||||
import { CACHED_COMMUNITY_GUILD_ID } from "../../utils.ts";
|
||||
@@ -24,86 +24,267 @@ Deno.test({
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
});
|
||||
|
||||
// Send a message with embeds
|
||||
await t.step("[message] Send a message with embeds", async () => {
|
||||
const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
embeds: [
|
||||
{
|
||||
title: "Deno",
|
||||
description: "Deno is a modern web platform for building the web.",
|
||||
url: "https://deno.land/",
|
||||
color: 0x00ff00,
|
||||
fields: [
|
||||
{
|
||||
name: "Deno",
|
||||
value: "Deno is a modern web platform for building the web.",
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Deno",
|
||||
value: "Deno is a modern web platform for building the web.",
|
||||
inline: true,
|
||||
},
|
||||
],
|
||||
footer: {
|
||||
text: "Deno",
|
||||
iconUrl: "https://deno.land/favicon.ico",
|
||||
},
|
||||
image: {
|
||||
url: "https://deno.land/favicon.ico",
|
||||
},
|
||||
thumbnail: {
|
||||
url: "https://deno.land/favicon.ico",
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
assertExists(message.id);
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
assertEquals(message.embeds.length, 1);
|
||||
assertEquals(message.embeds[0].title, "Deno");
|
||||
assertEquals(message.embeds[0].description, "Deno is a modern web platform for building the web.");
|
||||
assertEquals(message.embeds[0].url, "https://deno.land/");
|
||||
assertEquals(message.embeds[0].color, 0x00ff00);
|
||||
assertEquals(message.embeds[0].fields?.length, 2);
|
||||
assertEquals(message.embeds[0].fields?.[0].name, "Deno");
|
||||
assertEquals(message.embeds[0].fields?.[0].value, "Deno is a modern web platform for building the web.");
|
||||
assertEquals(message.embeds[0].fields?.[0].inline, true);
|
||||
assertEquals(message.embeds[0].fields?.[1].name, "Deno");
|
||||
assertEquals(message.embeds[0].fields?.[1].value, "Deno is a modern web platform for building the web.");
|
||||
assertEquals(message.embeds[0].fields?.[1].inline, true);
|
||||
assertEquals(message.embeds[0].footer?.text, "Deno");
|
||||
assertEquals(message.embeds[0].footer?.iconUrl, "https://deno.land/favicon.ico");
|
||||
assertEquals(message.embeds[0].image?.url, "https://deno.land/favicon.ico");
|
||||
assertEquals(message.embeds[0].thumbnail?.url, "https://deno.land/favicon.ico");
|
||||
});
|
||||
|
||||
// Send a message with components
|
||||
await t.step("[message] Send a message with components", async () => {
|
||||
const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
components: [
|
||||
{
|
||||
type: MessageComponentTypes.ActionRow,
|
||||
components: [
|
||||
{
|
||||
type: MessageComponentTypes.Button,
|
||||
label: "Doc",
|
||||
style: ButtonStyles.Link,
|
||||
url: `https://discordeno.mod.land/`,
|
||||
},
|
||||
{
|
||||
type: MessageComponentTypes.Button,
|
||||
label: "Server",
|
||||
style: ButtonStyles.Link,
|
||||
url: `https://discord.gg/ddeno`,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: MessageComponentTypes.ActionRow,
|
||||
components: [
|
||||
{
|
||||
type: MessageComponentTypes.Button,
|
||||
label: "Hi",
|
||||
customId: `hi`,
|
||||
style: ButtonStyles.Primary,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
assertExists(message.id);
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
assertEquals(message.components?.length, 2);
|
||||
assertEquals(message.components?.[0].type, MessageComponentTypes.ActionRow);
|
||||
assertEquals(message.components?.[0].components?.length, 2);
|
||||
assertEquals(message.components?.[0].components?.[0].type, MessageComponentTypes.Button);
|
||||
assertEquals(message.components?.[0].components?.[0].label, "Doc");
|
||||
assertEquals(message.components?.[0].components?.[0].style, ButtonStyles.Link);
|
||||
assertEquals(message.components?.[0].components?.[0].url, `https://discordeno.mod.land/`);
|
||||
assertEquals(message.components?.[0].components?.[1].type, MessageComponentTypes.Button);
|
||||
assertEquals(message.components?.[0].components?.[1].label, "Server");
|
||||
assertEquals(message.components?.[0].components?.[1].style, ButtonStyles.Link);
|
||||
assertEquals(message.components?.[0].components?.[1].url, `https://discord.gg/ddeno`);
|
||||
assertEquals(message.components?.[1].type, MessageComponentTypes.ActionRow);
|
||||
assertEquals(message.components?.[1].components?.length, 1);
|
||||
assertEquals(message.components?.[1].components?.[0].type, MessageComponentTypes.Button);
|
||||
assertEquals(message.components?.[1].components?.[0].label, "Hi");
|
||||
assertEquals(message.components?.[1].components?.[0].customId, `hi`);
|
||||
assertEquals(message.components?.[1].components?.[0].style, ButtonStyles.Primary);
|
||||
});
|
||||
|
||||
// Edit the message
|
||||
await t.step("[message] Edit the message", async () => {
|
||||
const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message.id);
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
const editedMessage = await bot.helpers.editMessage(channel.id, message.id, {
|
||||
content: "Hello Skillz 2",
|
||||
embeds: [
|
||||
{
|
||||
title: "Deno",
|
||||
description: "Deno is a modern web platform for building the web.",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
assertEquals(editedMessage.content, "Hello Skillz 2");
|
||||
assertEquals(editedMessage.embeds.length, 1);
|
||||
assertEquals(editedMessage.embeds[0].title, "Deno");
|
||||
assertEquals(editedMessage.embeds[0].description, "Deno is a modern web platform for building the web.");
|
||||
});
|
||||
|
||||
// Delete the message with a reason
|
||||
await t.step("[message] Delete the message with a reason", async () => {
|
||||
const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message.id);
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
|
||||
await bot.helpers.deleteMessage(channel.id, message.id, "Test");
|
||||
const deletedMessage = await bot.helpers.getMessage(channel.id, message.id);
|
||||
assertEquals(deletedMessage, undefined);
|
||||
});
|
||||
|
||||
// Delete the message without a reason
|
||||
await t.step("[message] Delete the message with a reason", async () => {
|
||||
const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message.id);
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
|
||||
await bot.helpers.deleteMessage(channel.id, message.id);
|
||||
const deletedMessage = await bot.helpers.getMessage(channel.id, message.id);
|
||||
assertEquals(deletedMessage, undefined);
|
||||
});
|
||||
|
||||
// Bulk delete messages with a reason
|
||||
await t.step("[message] Bulk delete messages with a reason", async () => {
|
||||
const message1 = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message1.id);
|
||||
assertEquals(message1.content, "Hello Skillz");
|
||||
|
||||
const message2 = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz 2",
|
||||
});
|
||||
assertExists(message2.id);
|
||||
assertEquals(message2.content, "Hello Skillz 2");
|
||||
|
||||
await bot.helpers.deleteMessages(channel.id, [message1.id, message2.id], "Test");
|
||||
const deletedMessage1 = await bot.helpers.getMessage(channel.id, message1.id);
|
||||
assertEquals(deletedMessage1, undefined);
|
||||
const deletedMessage2 = await bot.helpers.getMessage(channel.id, message2.id);
|
||||
assertEquals(deletedMessage2, undefined);
|
||||
});
|
||||
|
||||
// Bulk delete messages without a reason
|
||||
await t.step("[message] Bulk delete messages without a reason", async () => {
|
||||
const message1 = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message1.id);
|
||||
assertEquals(message1.content, "Hello Skillz");
|
||||
|
||||
const message2 = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz 2",
|
||||
});
|
||||
assertExists(message2.id);
|
||||
assertEquals(message2.content, "Hello Skillz 2");
|
||||
|
||||
await bot.helpers.deleteMessages(channel.id, [message1.id, message2.id]);
|
||||
const deletedMessage1 = await bot.helpers.getMessage(channel.id, message1.id);
|
||||
assertEquals(deletedMessage1, undefined);
|
||||
const deletedMessage2 = await bot.helpers.getMessage(channel.id, message2.id);
|
||||
assertEquals(deletedMessage2, undefined);
|
||||
});
|
||||
|
||||
// Get a message
|
||||
await t.step("[message] Get a message", async () => {
|
||||
const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message.id);
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
|
||||
const getMessage = await bot.helpers.getMessage(channel.id, message.id);
|
||||
assertExists(getMessage);
|
||||
assertEquals(getMessage.content, message.content);
|
||||
assertEquals(getMessage.id, message.id);
|
||||
});
|
||||
|
||||
// Pin a message
|
||||
await t.step("[message] Pin a message", async (t) => {
|
||||
const message = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message.id);
|
||||
assertEquals(message.content, "Hello Skillz");
|
||||
|
||||
await bot.helpers.pinMessage(channel.id, message.id);
|
||||
const pinnedMessages = await bot.helpers.getPins(channel.id);
|
||||
assertEquals(pinnedMessages.length, 1);
|
||||
assertEquals(pinnedMessages[0].content, message.content);
|
||||
assertEquals(pinnedMessages[0].id, message.id);
|
||||
|
||||
// Unpin a message
|
||||
await t.step("[message] Unpin a message", async () => {
|
||||
await bot.helpers.unpinMessage(channel.id, message.id);
|
||||
const pinnedMessages = await bot.helpers.getPins(channel.id);
|
||||
assertEquals(pinnedMessages.length, 0);
|
||||
});
|
||||
});
|
||||
|
||||
// Fetch multiple messages
|
||||
await t.step("[message] Fetch multiple messages", async () => {
|
||||
const message1 = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz",
|
||||
});
|
||||
assertExists(message1.id);
|
||||
assertEquals(message1.content, "Hello Skillz");
|
||||
|
||||
const message2 = await bot.helpers.sendMessage(channel.id, {
|
||||
content: "Hello Skillz 2",
|
||||
});
|
||||
assertExists(message2.id);
|
||||
assertEquals(message2.content, "Hello Skillz 2");
|
||||
|
||||
const messages = await bot.helpers.getMessages(channel.id, {
|
||||
limit: 2,
|
||||
});
|
||||
assertEquals(messages.size, 2);
|
||||
assertEquals(messages.get(message1.id)?.content, message1.content);
|
||||
assertEquals(messages.get(message2.id)?.content, message2.content);
|
||||
});
|
||||
|
||||
// Delete the channel once test is done
|
||||
await bot.helpers.deleteChannel(channel.id);
|
||||
},
|
||||
});
|
||||
|
||||
// Deno.test({
|
||||
// name: "[message] send message with text",
|
||||
// fn: async (t) => {
|
||||
// await sendMessageWithTextTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] send message with embeds",
|
||||
// fn: async (t) => {
|
||||
// await sendMessageWithEmbedsTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] send message with components",
|
||||
// fn: async (t) => {
|
||||
// await sendMessageWithComponents(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] edit message",
|
||||
// fn: async (t) => {
|
||||
// await editMessageTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] delete message without a reason",
|
||||
// fn: async (t) => {
|
||||
// await deleteMessageWithoutReasonTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] delete message with a reason",
|
||||
// fn: async (t) => {
|
||||
// await deleteMessageWithReasonTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] delete messages without a reason",
|
||||
// fn: async (t) => {
|
||||
// await deleteMessagesWithoutReasonTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] delete messages with a reason",
|
||||
// fn: async (t) => {
|
||||
// await deleteMessagesWithReasonTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] fetch a message",
|
||||
// fn: async (t) => {
|
||||
// await getMessageTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
// Deno.test({
|
||||
// name: "[message] fetch messages",
|
||||
// fn: async (t) => {
|
||||
// await getMessagesTest(channel.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
|
||||
// Deno.test({
|
||||
// name: "[message] pin a message",
|
||||
// fn: async (t) => {
|
||||
// await pinMessageTests(channel.id, message.id);
|
||||
// },
|
||||
// ...sanitizeMode,
|
||||
// });
|
||||
|
||||
Reference in New Issue
Block a user