Add missing tests

This commit is contained in:
chroventer
2020-10-02 03:10:33 -07:00
parent 32e88e7f81
commit f5421a615b
2 changed files with 116 additions and 63 deletions
+111 -62
View File
@@ -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() {