feat: add scheduled events unit tests

This commit is contained in:
Skillz4Killz
2021-11-17 03:21:53 +00:00
committed by GitHub
parent 6fce04fc16
commit f08edcd5fc
10 changed files with 291 additions and 162 deletions
@@ -2,6 +2,7 @@ import { Bot } from "../../../../src/bot.ts";
import { ChannelTypes } from "../../../../src/types/channels/channelTypes.ts";
import { CreateScheduledEvent, ScheduledEventEntityType } from "../../../../src/types/guilds/scheduledEvents.ts";
import { assertEquals, assertExists } from "../../../deps.ts";
import { CACHED_COMMUNITY_GUILD_ID } from "../../../mod.ts";
export async function createScheduledEventTests(
bot: Bot,
@@ -9,23 +10,34 @@ export async function createScheduledEventTests(
options: CreateScheduledEvent,
t: Deno.TestContext
) {
if ([ScheduledEventEntityType.StageInstance, ScheduledEventEntityType.Voice].includes(options.entityType)) {
const channel = await bot.helpers.createChannel(guildId, {
name: "entity",
type:
options.entityType === ScheduledEventEntityType.Voice ? ChannelTypes.GuildVoice : ChannelTypes.GuildStageVoice,
});
const channel = [
ScheduledEventEntityType.StageInstance,
ScheduledEventEntityType.Voice,
ScheduledEventEntityType.External,
].includes(options.entityType)
? await bot.helpers.createChannel(guildId, {
name: "entity",
type:
options.entityType === ScheduledEventEntityType.Voice
? ChannelTypes.GuildVoice
: options.entityType === ScheduledEventEntityType.StageInstance
? ChannelTypes.GuildStageVoice
: ChannelTypes.GuildText,
})
: undefined;
options.channelId = channel.id;
}
if (channel && options.entityType !== ScheduledEventEntityType.External) options.channelId = channel.id;
const event = await bot.helpers.createScheduledEvent(guildId, options);
if (channel && guildId === CACHED_COMMUNITY_GUILD_ID) {
await bot.helpers.deleteChannel(channel.id);
}
// Assertions
assertExists(event.id);
assertEquals(event.channelId, options.channelId);
assertEquals(event.speakerIds?.length, options.speakerIds?.length);
assertEquals(event.location, options.location);
assertEquals(event.name, options.name);
assertEquals(event.description, options.description);
@@ -0,0 +1,15 @@
import { Bot } from "../../../../src/bot.ts";
import { ScheduledEventEntityType, ScheduledEventPrivacyLevel } from "../../../../src/types/guilds/scheduledEvents.ts";
export async function deleteScheduledEventTests(bot: Bot, guildId: bigint, t: Deno.TestContext) {
const event = await bot.helpers.createScheduledEvent(guildId, {
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
scheduledEndTime: Date.now() + 1200000,
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.External,
location: "heaven",
});
await bot.helpers.deleteScheduledEvent(guildId, event.id);
}
@@ -0,0 +1,65 @@
import { Bot } from "../../../../src/bot.ts";
import { ChannelTypes } from "../../../../src/types/channels/channelTypes.ts";
import { CreateScheduledEvent, ScheduledEventEntityType, ScheduledEventPrivacyLevel } from "../../../../src/types/guilds/scheduledEvents.ts";
import { assertEquals } from "../../../deps.ts";
export async function editScheduledEventTests(bot: Bot, guildId: bigint, t: Deno.TestContext) {
const channel = await bot.helpers.createChannel(guildId, {
name: "entity",
type: ChannelTypes.GuildStageVoice,
});
const event = await bot.helpers.createScheduledEvent(guildId, {
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.StageInstance,
channelId: channel.id,
});
let edited = await bot.helpers.editScheduledEvent(guildId, event.id, {
name: "lfg2",
});
assertEquals(event.name, "lfg");
assertEquals(edited.name, "lfg2");
assertEquals(edited.description, "itoh is an imposter");
edited = await bot.helpers.editScheduledEvent(guildId, event.id, {
description: "skillz is not an imposter",
});
assertEquals(edited.description, "skillz is not an imposter");
let edited2 = await bot.helpers.editScheduledEvent(guildId, event.id, {
scheduledStartTime: edited.scheduledStartTime - 60000,
});
assertEquals(edited.scheduledStartTime > edited2.scheduledStartTime, true);
let edited3 = await bot.helpers.editScheduledEvent(guildId, event.id, {
scheduledStartTime: edited.scheduledStartTime + 600000,
});
assertEquals(edited2.scheduledStartTime < edited3.scheduledStartTime, true);
const voice = await bot.helpers.createChannel(guildId, {
name: "xxx",
type: ChannelTypes.GuildVoice,
});
edited2 = await bot.helpers.editScheduledEvent(guildId, event.id, {
entityType: ScheduledEventEntityType.Voice,
channelId: voice.id,
});
assertEquals(edited.entityType, ScheduledEventEntityType.StageInstance);
assertEquals(edited2.entityType, ScheduledEventEntityType.Voice);
edited2 = await bot.helpers.editScheduledEvent(guildId, event.id, {
entityType: ScheduledEventEntityType.External,
// @ts-ignore
channelId: null,
scheduledStartTime: Date.now() + 60000,
scheduledEndTime: Date.now() + 600000,
location: "heaven",
});
assertEquals(edited2.entityType, ScheduledEventEntityType.External);
await bot.helpers.deleteChannel(voice.id);
await bot.helpers.deleteChannel(channel.id);
}
+145 -114
View File
@@ -65,6 +65,9 @@ import { deleteChannelOverwriteTests } from "./helpers/channels/deleteChannelOve
import { editChannelTests } from "./helpers/channels/editChannel.ts";
import { createScheduledEventTests } from "./helpers/guilds/scheduledEvents/createScheduledEvent.ts";
import { ScheduledEventEntityType, ScheduledEventPrivacyLevel } from "../src/types/guilds/scheduledEvents.ts";
import { GuildFeatures } from "../src/types/guilds/guildFeatures.ts";
import { editScheduledEventTests } from "./helpers/guilds/scheduledEvents/editScheduledEvent.ts";
import { deleteScheduledEventTests } from "./helpers/guilds/scheduledEvents/deleteScheduledEvent.ts";
// CHANGE TO TRUE WHEN DEBUGGING SANITIZATION ERRORS
const sanitizeMode = {
@@ -73,6 +76,8 @@ const sanitizeMode = {
sanitizeExit: false,
};
export const CACHED_COMMUNITY_GUILD_ID = 907350958810480671n;
Deno.test({
name: "[Bot] - Starting Tests",
fn: async (t) => {
@@ -95,7 +100,15 @@ Deno.test({
},
// debug: console.log,
}),
intents: ["Guilds", "GuildEmojis", "GuildMessages", "GuildMessageReactions", "GuildBans", "GuildMembers", "GuildScheduledEvents"],
intents: [
"Guilds",
"GuildEmojis",
"GuildMessages",
"GuildMessageReactions",
"GuildBans",
"GuildMembers",
"GuildScheduledEvents",
],
cache: {
isAsync: false,
},
@@ -112,6 +125,8 @@ Deno.test({
// DELETE GUILDS IF LESS THAN 10 SERVERS AS SAFETY MEASURE
if (bot.cache.guilds.size() <= 10) {
bot.cache.guilds.forEach(async (guild) => {
// DO NOT DELETE OUR CACHED TEST SERVER FOR COMMUNITY FEATURES
if (guild.id === CACHED_COMMUNITY_GUILD_ID) return;
if (guild.ownerId === bot.id) await bot.helpers.deleteGuild(guild.id);
});
}
@@ -137,119 +152,134 @@ Deno.test({
// GUILD SCHEDULED EVENTS TESTS
await t.step("Guild Scheduled Event related tests", async (t) => {
await Promise.all([
// channelId?: bigint;
// speakerIds?: bigint[];
// location?: string;
// name: string;
// description: string;
// scheduledStartTime: number;
// scheduledEndTime?: number;
// privacyLevel: ScheduledEventPrivacyLevel;
// entityType: ScheduledEventEntityType;
// t.step({
// name: "[scheduled event] create a public scheduled event with no entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.Public,
// entityType: ScheduledEventEntityType.None,
// }, t);
// },
// ...sanitizeMode,
// }),
// t.step({
// name: "[scheduled event] create a guild scheduled event with no entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
// entityType: ScheduledEventEntityType.None,
// }, t);
// },
// ...sanitizeMode,
// }),
// t.step({
// name: "[scheduled event] create a public scheduled event with stage entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.Public,
// entityType: ScheduledEventEntityType.StageInstance,
// }, t);
// },
// ...sanitizeMode,
// }),
// t.step({
// name: "[scheduled event] create a guild scheduled event with stage entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
// entityType: ScheduledEventEntityType.StageInstance,
// }, t);
// },
// ...sanitizeMode,
// }),
// t.step({
// name: "[scheduled event] create a public scheduled event with voice entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.Public,
// entityType: ScheduledEventEntityType.Voice,
// }, t);
// },
// ...sanitizeMode,
// }),
// t.step({
// name: "[scheduled event] create a guild scheduled event with voice entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
// entityType: ScheduledEventEntityType.Voice,
// }, t);
// },
// ...sanitizeMode,
// }),
// t.step({
// name: "[scheduled event] create a public scheduled event with external entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.Public,
// entityType: ScheduledEventEntityType.External,
// }, t);
// },
// ...sanitizeMode,
// }),
// t.step({
// name: "[scheduled event] create a guild scheduled event with external entity",
// fn: async (t) => {
// await createScheduledEventTests(bot, guild.id, {
// name: "lfg",
// description: "lfg it is",
// scheduledStartTime: Date.now() + 600000,
// privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
// entityType: ScheduledEventEntityType.External,
// }, t);
// },
// ...sanitizeMode,
// }),
t.step({
name: "[scheduled event] create a guild scheduled event with stage entity",
fn: async (t) => {
await createScheduledEventTests(
bot,
CACHED_COMMUNITY_GUILD_ID,
{
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.StageInstance,
},
t
);
},
...sanitizeMode,
}),
t.step({
name: "[scheduled event] create a guild scheduled event with stage entity with an end time.",
fn: async (t) => {
await createScheduledEventTests(
bot,
CACHED_COMMUNITY_GUILD_ID,
{
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
scheduledEndTime: Date.now() + (600000 + 1),
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.StageInstance,
},
t
);
},
...sanitizeMode,
}),
t.step({
name: "[scheduled event] create a guild scheduled event with voice entity",
fn: async (t) => {
await createScheduledEventTests(
bot,
guild.id,
{
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.Voice,
},
t
);
},
...sanitizeMode,
}),
t.step({
name: "[scheduled event] create a guild scheduled event with voice entity with an end time.",
fn: async (t) => {
await createScheduledEventTests(
bot,
guild.id,
{
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
scheduledEndTime: Date.now() + (600000 + 1),
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.Voice,
},
t
);
},
...sanitizeMode,
}),
t.step({
name: "[scheduled event] create a guild scheduled event with external entity",
fn: async (t) => {
await createScheduledEventTests(
bot,
guild.id,
{
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
scheduledEndTime: Date.now() + 1200000,
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.External,
location: "heaven",
},
t
);
},
...sanitizeMode,
}),
t.step({
name: "[scheduled event] create a guild scheduled event with external entity with an end time.",
fn: async (t) => {
await createScheduledEventTests(
bot,
guild.id,
{
name: "lfg",
description: "itoh is an imposter",
scheduledStartTime: Date.now() + 600000,
scheduledEndTime: Date.now() + (600000 + 1),
privacyLevel: ScheduledEventPrivacyLevel.GuildOnly,
entityType: ScheduledEventEntityType.External,
location: "heaven",
},
t
);
},
...sanitizeMode,
}),
t.step({
name: "[scheduled event] edit a scheduled event",
fn: async (t) => {
await editScheduledEventTests(bot, CACHED_COMMUNITY_GUILD_ID, t);
},
...sanitizeMode,
}),
t.step({
name: "[scheduled event] delete a scheduled event",
fn: async (t) => {
await deleteScheduledEventTests(bot, guild.id, t);
},
...sanitizeMode,
}),
]);
});
@@ -985,6 +1015,7 @@ Deno.test({
}),
]);
await bot.helpers.deleteGuild(guild.id);
await stopBot(bot);
},
...sanitizeMode,