corde
Version:
A simple library for Discord bot tests
91 lines (70 loc) • 2.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
exports.ToSetRoleMentionable = void 0;
const utils_1 = require("../../../utils");
const roleUtils_1 = require("../../roleUtils");
const expectTest_1 = require("../expectTest");
class ToSetRoleMentionable extends expectTest_1.ExpectTest {
constructor(params) {
super({ ...params, testName: "toSetRoleMentionable" });
}
async action(mentionable, roleIdentifier) {
const identifier = roleUtils_1.roleUtils.getRoleData(roleIdentifier);
const error = roleUtils_1.roleUtils.getErrorForUndefinedRoleData(identifier);
if (error) {
return this.createFailedTest(error);
}
if (mentionable == undefined) {
return this.createReport(
"expected: mentionable option to be true or false\n",
`received: ${(0, utils_1.typeOf)(mentionable)}`,
);
}
if (typeof mentionable !== "boolean") {
return this.createReport(
"expected: mentionable parameter to be of boolean type\n",
`received: ${(0, utils_1.typeOf)(mentionable)}`,
);
}
const oldRole = await this.cordeBot.findRole(identifier);
const invalidRoleErrorMessage = roleUtils_1.roleUtils.validateRole(oldRole, identifier);
if (invalidRoleErrorMessage) {
return this.createFailedTest(invalidRoleErrorMessage);
}
try {
await this.sendCommandMessage();
} catch (error) {
return this.createFailedTest(error.message);
}
let role;
try {
role = await this.cordeBot.events.onceRoleMentionableUpdate(
identifier,
this.timeout,
this.guildId,
);
} catch {
if (this.isNot) {
return this.createPassTest();
}
return this.createReport(
`expected: mentionable to be ${mentionable}\n`,
"received: role mentionable was not updated",
);
}
if (role.mentionable === mentionable) {
this.hasPassed = true;
}
this.invertHasPassedIfIsNot();
if (this.hasPassed) {
return this.createPassTest();
}
return this.createReport(
`expected: mentionable to ${this.isNot ? "not " : ""}be ${mentionable}\n`,
`received: ${role.mentionable}`,
);
}
}
exports.ToSetRoleMentionable = ToSetRoleMentionable;