mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
Add missing tests
This commit is contained in:
+111
-62
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user