corde
Version:
A simple library for Discord bot tests
99 lines (77 loc) • 2.51 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
exports.ToSetRolePosition = void 0;
const utils_1 = require("../../../utils");
const roleUtils_1 = require("../../roleUtils");
const expectTest_1 = require("../expectTest");
class ToSetRolePosition extends expectTest_1.ExpectTest {
constructor(params) {
super({ ...params, testName: "toSetRolePosition" });
}
async action(newPosition, roleIdentifier) {
const identifier = roleUtils_1.roleUtils.getRoleData(roleIdentifier);
const error = roleUtils_1.roleUtils.getErrorForUndefinedRoleData(identifier);
if (error) {
return this.createFailedTest(error);
}
if (typeof newPosition !== "number") {
return this.createReport(
"expected: position option to be a number\n",
`received: ${(0, utils_1.typeOf)(newPosition)}`,
);
}
const oldRole = await this.cordeBot.findRole(identifier);
const invalidRoleErrorMessage = roleUtils_1.roleUtils.validateRole(oldRole, identifier);
if (invalidRoleErrorMessage) {
return this.createFailedTest(invalidRoleErrorMessage);
}
let role = await this.cordeBot.findRole(identifier);
const lastRole = this.cordeBot
.getRoles()
.sort((r1, r2) => r2.position - r1.position)
.first();
if (!lastRole) {
return this.createReport("no roles were found");
}
if (newPosition > lastRole.position) {
return this.createReport(
`expected: position to be >= 0 and <= ${lastRole.rawPosition} (max value possible)\n`,
`received: ${newPosition}`,
);
}
try {
await this.sendCommandMessage();
} catch (error) {
return this.createFailedTest(error.message);
}
try {
role = await this.cordeBot.events.onceRolePositionUpdate(
identifier,
this.timeout,
this.guildId,
);
} catch {
if (this.isNot) {
return this.createPassTest();
}
return this.createReport(
`expected: role position to change to ${newPosition}\n`,
"received: position didn't change",
);
}
if (role.position === newPosition) {
this.hasPassed = true;
}
this.invertHasPassedIfIsNot();
if (this.hasPassed) {
return this.createPassTest();
}
return this.createReport(
`expected: role position to change to ${newPosition}\n`,
`received: ${role.rawPosition}`,
);
}
}
exports.ToSetRolePosition = ToSetRolePosition;