@lambocreeper/mock-discord.js
Version:
Easily mock Discord.js for testing your bot's code.
102 lines (101 loc) • 4.37 kB
JavaScript
;
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;