From f5421a615b06bb92ad24039adf00835497039203 Mon Sep 17 00:00:00 2001 From: chroventer Date: Fri, 2 Oct 2020 03:10:33 -0700 Subject: [PATCH] Add missing tests --- deps.ts | 6 +- tests/mod.test.ts | 173 +++++++++++++++++++++++++++++----------------- 2 files changed, 116 insertions(+), 63 deletions(-) diff --git a/deps.ts b/deps.ts index 635f2c449..fd14f318d 100644 --- a/deps.ts +++ b/deps.ts @@ -1,4 +1,8 @@ -export { assertEquals } from "https://deno.land/std/testing/asserts.ts"; +export { + assert, + assertArrayContains, + assertEquals, +} from "https://deno.land/std/testing/asserts.ts"; export { delay } from "https://deno.land/std@0.67.0/async/delay.ts"; export { encode } from "https://deno.land/std@0.67.0/encoding/base64.ts"; export { diff --git a/tests/mod.test.ts b/tests/mod.test.ts index 1dae163e4..e543769ea 100644 --- a/tests/mod.test.ts +++ b/tests/mod.test.ts @@ -1,25 +1,34 @@ -import { assert } from "https://deno.land/std@0.70.0/testing/asserts.ts"; -import { assertEquals, delay } from "../deps.ts"; +import { assert, assertArrayContains, assertEquals, delay } from "../deps.ts"; import { botID, + + cache, + Channel, createClient, + + createGuildChannel, createGuildRole, + + createServer, + deleteChannel, + deleteRole, + deleteServer, editRole, - Intents, - Role, -} from "../mod.ts"; -import { - channelOverwriteHasPermission, + getMessage, + + Guild, + Intents, + + OverwriteType, + Role, + sendMessage, -} from "../src/handlers/channel.ts"; -import { createGuildChannel, createServer } from "../src/handlers/guild.ts"; -import { Guild } from "../src/structures/guild.ts"; -import { OverwriteType } from "../src/types/guild.ts"; -import { Permissions } from "../src/types/permission.ts"; -import { cache } from "../src/utils/cache.ts"; +} from "../mod.ts"; +import { editChannel } from "../src/handlers/channel.ts"; +import { getChannel } from "../src/handlers/guild.ts"; const token = Deno.env.get("DISCORD_TOKEN"); if (!token) throw "Token is not provided"; @@ -65,9 +74,8 @@ Deno.test({ ...testOptions, }); -// Roles +// Role let roleID: string; -let channelID: string; Deno.test({ name: "create a role in a guild", @@ -78,7 +86,7 @@ Deno.test({ }); // Check whether the created role is nil or not - assert(createdRole.id); + assert(createdRole); roleID = createdRole.id; }, @@ -97,7 +105,7 @@ Deno.test({ })) as Role; // Assertions - assert(editedRole.id); + assert(editedRole); assertEquals(editedRole.name, "Edited Role"); assertEquals(editedRole.color, 4320244); assertEquals(editedRole.hoist, false); @@ -108,65 +116,98 @@ Deno.test({ ...testOptions, }); +// Channel + +let channelID: string; + Deno.test({ - name: "channel overwrite has permission", + name: "create a channel in a guild", async fn() { - const guild = cache.guilds.get(guildID)!; - const channel = await createGuildChannel(guild, "testing", { - permission_overwrites: [ - { - id: roleID, - type: OverwriteType.ROLE, - allow: ["VIEW_CHANNEL", "SEND_MESSAGES"], - deny: ["USE_EXTERNAL_EMOJIS"], - }, - ], - }); + const guild = cache.guilds.get(guildID); + if (!guild) throw "Guild not found"; + const createdChannel = await createGuildChannel(guild, "test"); - assert(channel.id); - // Checks whether the role has these perms - assert( - channelOverwriteHasPermission( - guildID, - roleID, - channel.permission_overwrites || [], - [Permissions.VIEW_CHANNEL, Permissions.SEND_MESSAGES], - ), - ); - // Checks if this permission was actually disabled - assert( - !channelOverwriteHasPermission( - guildID, - roleID, - channel.permission_overwrites || [], - [Permissions.USE_EXTERNAL_EMOJIS], - ), - ); - // Checks if this permission is missing that was neither allowed nor denied - assert( - !channelOverwriteHasPermission( - guildID, - roleID, - channel.permission_overwrites || [], - [Permissions.MANAGE_MESSAGES], - ), - ); + // Check whether the created channel is nil or not + assert(createdChannel); - channelID = channel.id; + channelID = createdChannel.id; }, ...testOptions, }); Deno.test({ - name: "get message", + name: "get a channel in a guild", async fn() { - const message = await sendMessage(channelID, "Test message 1"); - const rawMessage = await getMessage(channelID, message.id); + const channel = await getChannel(channelID); - assertEquals(message.id, rawMessage.id); + assertEquals(channel.id, channelID); + }, + ...testOptions, +}); + +Deno.test({ + name: "edit a channel in a guild", + async fn() { + const channel = await editChannel(channelID, { + name: "edited channel", + }) as Channel; + + assert(channel); + + channelID = channel.id; }, }); +Deno.test({ + name: "channel overwrite has permission", + async fn() { + const channel = cache.channels.get(channelID); + if (!channel) throw "Channel not found"; + assertArrayContains(channel.permission_overwrites!, [ + { + id: roleID, + type: OverwriteType.ROLE, + // The type for Channel#permission_overwrites is "RawOverwrite[] | undefined" + // not "Overwrite[]"; therefore, permission strings cannot be used. + // allow: ["VIEW_CHANNEL", "SEND_MESSAGES"], + // deny: ["USE_EXTERNAL_EMOJIS"], + }, + ]); + + // THIS TEST CASE SHOULD BE REFACTORED AND IMPROVED + // CURRENTLY, IT USES Channel#permission_overwrites + // but preferably, it should use the channelOverwriteHasPermission() + }, + ...testOptions, +}); + +// Message + +let messageID: string; + +Deno.test({ + name: "create a message in a guild", + async fn() { + const createdMessage = await sendMessage(channelID, "test"); + + // Check whether the created message is nil or not + assert(createdMessage); + + messageID = createdMessage.id; + }, +}); + +Deno.test({ + name: "get a message in a guild", + async fn() { + const message = await getMessage(channelID, messageID); + + assertEquals(messageID, message.id); + }, +}); + +// Clean up + Deno.test({ name: "delete a role from the guild", async fn() { @@ -176,6 +217,14 @@ Deno.test({ }, }); +Deno.test({ + name: "delete a channel in the guild", + async fn() { + await deleteChannel(guildID, channelID); + }, + ...testOptions, +}); + Deno.test({ name: "delete a guild", async fn() {