diff --git a/tests/mod.ts b/tests/mod.ts index c9b0a5fba..4a18d6b57 100644 --- a/tests/mod.ts +++ b/tests/mod.ts @@ -1,32 +1,33 @@ 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 { 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 { createGuildTests } from "./helpers/guilds/createGuild.ts"; -import { deleteGuildTests } from "./helpers/guilds/deleteGuild.ts"; -import { editGuildTests } from "./helpers/guilds/editGuild.ts"; -import { getAuditLogsTests } from "./helpers/guilds/getAuditLogs.ts"; -import { getAvailableVoiceRegionsTests } from "./helpers/guilds/getAvailableVoiceRegions.ts"; -import { getBanTests } from "./helpers/guilds/getBan.ts"; -import { getBansTests } from "./helpers/guilds/getBans.ts"; -import { getGuildTests } from "./helpers/guilds/getGuild.ts"; -import { getVanityURLTests } from "./helpers/guilds/getVanityUrl.ts"; -import { categoryChildrenTest } from "./helpers/channels/categoryChannels.ts"; -import { deleteChannelOverwriteTests } from "./helpers/channels/deleteChannelOverwrite.ts"; -import { editChannelTests } from "./helpers/channels/editChannel.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 { createGuildTests } from "./helpers/guilds/createGuild.ts"; +// import { deleteGuildTests } from "./helpers/guilds/deleteGuild.ts"; +// import { editGuildTests } from "./helpers/guilds/editGuild.ts"; +// import { getAuditLogsTests } from "./helpers/guilds/getAuditLogs.ts"; +// import { getAvailableVoiceRegionsTests } from "./helpers/guilds/getAvailableVoiceRegions.ts"; +// import { getBanTests } from "./helpers/guilds/getBan.ts"; +// import { getBansTests } from "./helpers/guilds/getBans.ts"; +// import { getGuildTests } from "./helpers/guilds/getGuild.ts"; +// import { getVanityURLTests } from "./helpers/guilds/getVanityUrl.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"; +console.log("[Tests] Starting test preparation") dotenv({ export: true, path: `${Deno.cwd()}/.env` }); let TOKEN = Deno.env.get("DISCORD_TOKEN"); @@ -108,262 +109,262 @@ export const message = await bot.helpers.sendMessage(channel.id, { content: "Hello Skillz", }); -Deno.test({ - name: "[guild] create a guild", - fn: async (t) => { - await createGuildTests(); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] delete a guild", - fn: async (t) => { - await deleteGuildTests(); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] edit a guild", - fn: async (t) => { - await editGuildTests(guild.id); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] get audit logs", - fn: async (t) => { - await getAuditLogsTests(guild.id); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] get available voice regions", - fn: async (t) => { - await getAvailableVoiceRegionsTests(); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] get a ban", - fn: async (t) => { - await getBanTests(guild.id); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] get bans", - fn: async (t) => { - await getBansTests(guild.id); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] get guilds", - fn: async (t) => { - await getGuildTests(guild.id); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[guild] get vanity url", - fn: async (t) => { - await getVanityURLTests(guild.id); - }, - ...sanitizeMode, -}); +// Deno.test({ +// name: "[guild] create a guild", +// fn: async (t) => { +// await createGuildTests(); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] delete a guild", +// fn: async (t) => { +// await deleteGuildTests(); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] edit a guild", +// fn: async (t) => { +// await editGuildTests(guild.id); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] get audit logs", +// fn: async (t) => { +// await getAuditLogsTests(guild.id); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] get available voice regions", +// fn: async (t) => { +// await getAvailableVoiceRegionsTests(); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] get a ban", +// fn: async (t) => { +// await getBanTests(guild.id); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] get bans", +// fn: async (t) => { +// await getBansTests(guild.id); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] get guilds", +// fn: async (t) => { +// await getGuildTests(guild.id); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[guild] get vanity url", +// fn: async (t) => { +// await getVanityURLTests(guild.id); +// }, +// ...sanitizeMode, +// }); -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] 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: "[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] 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) { - await deleteChannelOverwriteTests(guild.id); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[channel] edit a channel w/o a reason", - async fn(t) { - await editChannelTests(guild.id, {}); - }, - ...sanitizeMode, -}); -Deno.test({ - name: "[channel] edit a channel w/ a reason", - async fn(t) { - await editChannelTests(guild.id, { reason: "Blame wolf" }); - }, - ...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) { +// await deleteChannelOverwriteTests(guild.id); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[channel] edit a channel w/o a reason", +// async fn(t) { +// await editChannelTests(guild.id, {}); +// }, +// ...sanitizeMode, +// }); +// Deno.test({ +// name: "[channel] edit a channel w/ a reason", +// async fn(t) { +// await editChannelTests(guild.id, { reason: "Blame wolf" }); +// }, +// ...sanitizeMode, +// }); // channels -import "./channels/connectToVoice.ts"; -import "./channels/createChannel.ts"; -import "./channels/deleteChannel.ts"; -import "./channels/getChannel.ts"; -import "./channels/getChannels.ts"; -import "./channels/stageInstances.ts"; -// import "./channels/threads.ts"; +// import "./channels/connectToVoice.ts"; +// import "./channels/createChannel.ts"; +// import "./channels/deleteChannel.ts"; +// import "./channels/getChannel.ts"; +// import "./channels/getChannels.ts"; +// import "./channels/stageInstances.ts"; +// // import "./channels/threads.ts"; -// emoji -import "./emoji/createEmoji.ts"; -import "./emoji/deleteEmojiWithReason.ts"; -import "./emoji/deleteEmojiWithoutReason.ts"; -import "./emoji/editEmoji.ts"; -import "./emoji/emojiUrl.ts"; -import "./emoji/getEmoji.ts"; -import "./emoji/getMultipleEmojis.ts"; +// // emoji +// import "./emoji/createEmoji.ts"; +// import "./emoji/deleteEmojiWithReason.ts"; +// import "./emoji/deleteEmojiWithoutReason.ts"; +// import "./emoji/editEmoji.ts"; +// import "./emoji/emojiUrl.ts"; +// import "./emoji/getEmoji.ts"; +// import "./emoji/getMultipleEmojis.ts"; -// guilds -import "./guilds/urls.ts"; +// // guilds +// import "./guilds/urls.ts"; -// invite -import "./invite/createInvite.ts"; -// import "./invite/deleteInvite.ts"; -// import "./invite/getChannelInvites.ts"; -// import "./invite/getInvite.ts"; -// import "./invite/getInvites.ts"; +// // invite +// import "./invite/createInvite.ts"; +// // import "./invite/deleteInvite.ts"; +// // import "./invite/getChannelInvites.ts"; +// // import "./invite/getInvite.ts"; +// // import "./invite/getInvites.ts"; -// members -import "./members/avatarlUrl.ts"; -import "./members/ban.ts"; -import "./members/editBotNickname.ts"; -import "./members/getDmChannel.ts"; -import "./members/getMember.ts"; +// // members +// import "./members/avatarlUrl.ts"; +// import "./members/ban.ts"; +// import "./members/editBotNickname.ts"; +// import "./members/getDmChannel.ts"; +// import "./members/getMember.ts"; -// messages -// import "./messages/reactions.ts"; +// // messages +// // import "./messages/reactions.ts"; -// misc -import "./misc/getApplicationInfo.ts"; -import "./misc/getDiscoveryCategories.ts"; -import "./misc/getUser.ts"; -// import "./misc/getVoiceRegions.ts"; -import "./misc/snowflake.ts"; -import "./misc/typing.ts"; -import "./misc/validateDiscovery.ts"; -import "./misc/editBotStatus.ts"; +// // misc +// import "./misc/getApplicationInfo.ts"; +// import "./misc/getDiscoveryCategories.ts"; +// import "./misc/getUser.ts"; +// // import "./misc/getVoiceRegions.ts"; +// import "./misc/snowflake.ts"; +// import "./misc/typing.ts"; +// import "./misc/validateDiscovery.ts"; +// import "./misc/editBotStatus.ts"; -// role -import "./role/addRole.ts"; -import "./role/createRoleWithoutReason.ts"; -import "./role/createRoleWithReason.ts"; -import "./role/deleteRoleWithoutReason.ts"; -import "./role/deleteRoleWithReason.ts"; -import "./role/editRole.ts"; -import "./role/getAllRoles.ts"; -import "./role/removeRole.ts"; +// // role +// import "./role/addRole.ts"; +// import "./role/createRoleWithoutReason.ts"; +// import "./role/createRoleWithReason.ts"; +// import "./role/deleteRoleWithoutReason.ts"; +// import "./role/deleteRoleWithReason.ts"; +// import "./role/editRole.ts"; +// import "./role/getAllRoles.ts"; +// import "./role/removeRole.ts"; -// scheduledEvents -import "./scheduledEvents/createExternalEventWithEndtime.ts"; -import "./scheduledEvents/createExternalEventWithoutEndtime.ts"; -import "./scheduledEvents/createStageEventWithEndtime.ts"; -import "./scheduledEvents/createStageEventWithoutEndtime.ts"; -import "./scheduledEvents/createVoiceEventWithEndtime.ts"; -import "./scheduledEvents/createVoiceEventWithoutEndtime.ts"; -// import "./scheduledEvents/deleteEvent.ts"; -// import "./scheduledEvents/editEvent.ts"; +// // scheduledEvents +// import "./scheduledEvents/createExternalEventWithEndtime.ts"; +// import "./scheduledEvents/createExternalEventWithoutEndtime.ts"; +// import "./scheduledEvents/createStageEventWithEndtime.ts"; +// import "./scheduledEvents/createStageEventWithoutEndtime.ts"; +// import "./scheduledEvents/createVoiceEventWithEndtime.ts"; +// import "./scheduledEvents/createVoiceEventWithoutEndtime.ts"; +// // import "./scheduledEvents/deleteEvent.ts"; +// // import "./scheduledEvents/editEvent.ts"; -// webhooks -import "./webhooks/deleteWebhook.ts"; -import "./webhooks/deleteWebhookWithToken.ts"; -// import "./webhooks/sendWebhook.ts"; -// import "./webhooks/webhooks.ts"; +// // webhooks +// import "./webhooks/deleteWebhook.ts"; +// import "./webhooks/deleteWebhookWithToken.ts"; +// // import "./webhooks/sendWebhook.ts"; +// // import "./webhooks/webhooks.ts"; -// TESTS THAT DON'T REQUIRE API CONNECTION -import "./local.ts"; +// // TESTS THAT DON'T REQUIRE API CONNECTION +// import "./local.ts"; -// // BENCHMARK TESTING -import "./benchmark.ts"; +// // // BENCHMARK TESTING +// import "./benchmark.ts"; diff --git a/transformers/channel.ts b/transformers/channel.ts index eeebc42e6..ed5974088 100644 --- a/transformers/channel.ts +++ b/transformers/channel.ts @@ -28,13 +28,13 @@ export function transformChannel( type: payload.channel.type, position: payload.channel.position, name: payload.channel.name, - topic: payload.channel.topic, + topic: payload.channel.topic ?? undefined, nsfw: payload.channel.nsfw, bitrate: payload.channel.bitrate, userLimit: payload.channel.user_limit, rateLimitPerUser: payload.channel.rate_limit_per_user, // recipients: payload.channel.recipients?.map((r) => bot.transformers.user(bot, r)), - rtcRegion: payload.channel.rtc_region, + rtcRegion: payload.channel.rtc_region ?? undefined, videoQualityMode: payload.channel.video_quality_mode, guildId: payload.guildId || (payload.channel.guild_id ? bot.transformers.snowflake(payload.channel.guild_id) : 0n), lastPinTimestamp: payload.channel.last_pin_timestamp ? Date.parse(payload.channel.last_pin_timestamp) : undefined, diff --git a/types/shared.ts b/types/shared.ts index 849bd40fa..665aff980 100644 --- a/types/shared.ts +++ b/types/shared.ts @@ -1246,11 +1246,21 @@ export type KeysWithUndefined = { [K in keyof T]-?: undefined extends T[K] ? K : never; }[keyof T]; -export type Optionalize = T extends object ? - & { - [K in KeysWithUndefined]?: Optionalize; - } - & { - [K in Exclude>]: Optionalize; - } - : T; +// export type Optionalize = T extends object ? +// & { +// [K in KeysWithUndefined]?: Optionalize; +// } +// & { +// [K in Exclude>]: Optionalize; +// } +// : T; + +export type Optionalize = { + [K in KeysWithUndefined]?: Optionalize +} & { + [K in Exclude>]: T[K] extends object + ? {} extends Pick + ? T[K] + : Optionalize + : T[K] +}