UNPKG

@lambocreeper/mock-discord.js

Version:

Easily mock Discord.js for testing your bot's code.

102 lines (101 loc) 4.37 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const discord_js_1 = __importDefault(require("discord.js")); const BaseMocks_1 = __importDefault(require("./BaseMocks")); const guild_1 = __importDefault(require("./defaults/guild")); const guildchannel_1 = __importDefault(require("./defaults/guildchannel")); const textchannel_1 = __importDefault(require("./defaults/textchannel")); const user_1 = __importDefault(require("./defaults/user")); const guildmember_1 = __importDefault(require("./defaults/guildmember")); const message_1 = __importDefault(require("./defaults/message")); const messagerReaction_1 = __importDefault(require("./defaults/messagerReaction")); class CustomMocks { /** * Returns a guild mock based off of given options. * * @returns {Discord.Guild} */ static getGuild(options, client) { const discordClient = client ?? BaseMocks_1.default.getClient(); const data = { ...guild_1.default, ...options }; return Reflect.construct(discord_js_1.default.Guild, [discordClient, data]); } /** * Returns a guild channel based off of given options. * * @returns {Discord.GuildChannel} */ static getGuildChannel(options, guild) { const discordGuild = guild ?? BaseMocks_1.default.getGuild(); const data = { ...guildchannel_1.default, ...options }; return Reflect.construct(discord_js_1.default.GuildChannel, [discordGuild, data]); } /** * Returns a text channel based off of given options. * * @returns {Discord.TextChannel} */ static getTextChannel(options, guild) { const discordGuild = guild ?? BaseMocks_1.default.getGuild(); const data = { ...textchannel_1.default, ...options }; return Reflect.construct(discord_js_1.default.TextChannel, [discordGuild, data]); } /** * Returns a user based off of given options. * * @returns {Discord.User} */ static getUser(options, client) { const discordClient = client ?? BaseMocks_1.default.getClient(); const data = { ...user_1.default, ...options }; return Reflect.construct(discord_js_1.default.User, [discordClient, data]); } /** * Returns a guild member based off of given options. * * @returns {Discord.GuildMember} */ static getGuildMember(options, extras) { const discordClient = extras?.client ?? BaseMocks_1.default.getClient(); const data = { ...guildmember_1.default, ...options }; const discordGuild = extras?.guild ?? BaseMocks_1.default.getGuild(); return Reflect.construct(discord_js_1.default.GuildMember, [discordClient, data, discordGuild]); } /** * Returns a message based off of given options. * * @returns {Discord.Message} */ static getMessage(options, extras) { const discordClient = extras?.client ?? BaseMocks_1.default.getClient(); const data = { ...message_1.default, ...options }; const message = Reflect.construct(discord_js_1.default.Message, [discordClient, data]); /** * Both channel and member are "getter" methods that resolve to objects * based on IDs which are stored on the client - since we're mocking * the client there will be no IDs, so overwrite these getters */ Object.defineProperty(message, "channel", { get: () => extras?.channel ?? BaseMocks_1.default.getTextChannel() }); Object.defineProperty(message, "member", { get: () => extras?.member ?? BaseMocks_1.default.getGuildMember() }); return message; } /** * Returns a message reaction based off of given options. * * @returns {Discord.MessageReaction} */ static getMessageReaction(options, extras) { const discordClient = extras?.client ?? BaseMocks_1.default.getClient(); const data = { ...messagerReaction_1.default, ...options }; const message = extras?.message ?? BaseMocks_1.default.getMessage(); return Reflect.construct(discord_js_1.default.MessageReaction, [discordClient, data, message]); } } exports.default = CustomMocks;