Skip to content

Commit

Permalink
chore(e2e): add tests for toDeleteRole and fix it
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasgmagalhaes committed Jan 28, 2021
1 parent 51d2fae commit a3cec60
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 11 deletions.
20 changes: 19 additions & 1 deletion e2e/bot.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ export function getRole(name) {
return bot.guilds.cache.get(config.guildId).roles.cache.find((r) => r.name === name);
}

export function getRoleManager() {
return bot.guilds.cache.get(config.guildId).roles;
}

/**
* Use this functions before use sendMessage (add it to **corde.beforeStart**)
*/
Expand All @@ -52,7 +56,7 @@ bot.on("message", async (message) => {
try {
const args = message.content.slice(config.botPrefix.length).trim().split(" ");
const command = args.shift();
handleCommands(message, command, args);
await handleCommands(message, command, args);
} catch (error) {
message.channel.send("Fail in execute command: " + error);
}
Expand Down Expand Up @@ -94,6 +98,8 @@ async function handleCommands(message, command, args) {
} else if (command === "setRolePermission") {
const id = args.shift();
await setRolePermission(message, id, args);
} else if (command === "deleteRole") {
await deleteRole(message, args[0]);
}
}

Expand Down Expand Up @@ -221,6 +227,18 @@ async function setRolePermission(msg, roleId, permissions) {
await role.setPermissions(permissions);
}

/**
* @param {Message} msg
* @param {string} roleId
*/
async function deleteRole(msg, roleId) {
const role = getRoleById(msg, roleId);

if (!role.deleted) {
await role.delete();
}
}

/** --------------------- Utility functions --------------------- */

/**
Expand Down
22 changes: 22 additions & 0 deletions e2e/toDeleteRole/__cordeTest__/bot_case1.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// @ts-nocheck

import corde from "../../../lib";
import { login, getRole, bot, getRoleManager } from "../../bot";

let role = null;
const roleName = "role-to-delete";

corde.test("", async () => {
await login();
role = getRole(roleName);
corde.expect(`deleteRole ${role.id}`).toDeleteRole(role.id);
});

corde.afterAll(async () => {
await getRoleManager().create({
data: {
name: roleName,
},
});
bot.destroy();
});
17 changes: 17 additions & 0 deletions e2e/toDeleteRole/__cordeTest__/bot_case2.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// @ts-nocheck

import corde from "../../../lib";
import { login, getRole, bot } from "../../bot";

let role = null;
const roleName = "role-to-delete";

corde.test("", async () => {
await login();
role = getRole(roleName);
corde.expect(`deleteRole abc`).toDeleteRole(role.id);
});

corde.afterAll(async () => {
bot.destroy();
});
14 changes: 14 additions & 0 deletions e2e/toDeleteRole/toDeleteRole.case1.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import Utils from "../testUtils";
import { messages } from "../../src/messages";
import cli from "../cliRunner";

describe("testing toDeleteRole", () => {
test("should delete a role", async (done) => {
const command = Utils.buildCommandWithConfigPath("toDeleteRole", "bot_case1.test.ts");
const results = await cli.exec(command);
expect(results.stdout).toContain(messages.ALL_TESTS_PASSED);
expect(results.stdout).toContain(messages.TOTAL + " 1");
expect(results.statusCode).toEqual(0);
done();
});
});
14 changes: 14 additions & 0 deletions e2e/toDeleteRole/toDeleteRole.case2.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import Utils from "../testUtils";
import { messages } from "../../src/messages";
import cli from "../cliRunner";

describe("testing toDeleteRole", () => {
test("should fail", async (done) => {
const command = Utils.buildCommandWithConfigPath("toDeleteRole", "bot_case2.test.ts");
const results = await cli.exec(command);
expect(results.stdout).toContain(messages.ALL_TESTS_FAIL);
expect(results.stdout).toContain(messages.FAILURES + " 1");
expect(results.statusCode).toEqual(1);
done();
});
});
14 changes: 4 additions & 10 deletions src/api/expectMatches/role/toDeleteRole.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { CordeBot } from "../../../core";
import { TestReport } from "../..";
import { RoleData } from "../../../types";
import { Role } from "discord.js";
import Utils from "../../../utils/utils";

export async function toDeleteRole(
commandName: string,
Expand All @@ -18,15 +18,9 @@ export async function toDeleteRole(
output = "No role found";
} else {
await cordeBot.sendTextMessage(commandName);
const promiseRole = new Promise<Role>(async (resolve) => {
setTimeout(async () => {
role = await cordeBot.fetchRole(role.id);
resolve(role);
}, 600);
});

role = await promiseRole;
if (!role) {
await Utils.wait(Utils.delayValue);
role = await cordeBot.fetchRole(role.id);
if (!role || role.deleted) {
isEqual = true;
}

Expand Down

0 comments on commit a3cec60

Please sign in to comment.