This commit is contained in:
parent
c6b458199c
commit
904842ae32
9 changed files with 340 additions and 79 deletions
106
tests/commands/__snapshots__/effects.test.ts.snap
Normal file
106
tests/commands/__snapshots__/effects.test.ts.snap
Normal file
|
@ -0,0 +1,106 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`EXPECT CommandBuilder to be defined 1`] = `
|
||||
{
|
||||
"contexts": undefined,
|
||||
"default_member_permissions": undefined,
|
||||
"default_permission": undefined,
|
||||
"description": "Effects",
|
||||
"description_localizations": undefined,
|
||||
"dm_permission": undefined,
|
||||
"integration_types": undefined,
|
||||
"name": "effects",
|
||||
"name_localizations": undefined,
|
||||
"nsfw": undefined,
|
||||
"options": [
|
||||
{
|
||||
"description": "List all effects I have",
|
||||
"description_localizations": undefined,
|
||||
"name": "list",
|
||||
"name_localizations": undefined,
|
||||
"options": [
|
||||
{
|
||||
"autocomplete": undefined,
|
||||
"choices": undefined,
|
||||
"description": "The page number",
|
||||
"description_localizations": undefined,
|
||||
"max_value": undefined,
|
||||
"min_value": 1,
|
||||
"name": "page",
|
||||
"name_localizations": undefined,
|
||||
"required": false,
|
||||
"type": 10,
|
||||
},
|
||||
],
|
||||
"type": 1,
|
||||
},
|
||||
{
|
||||
"description": "Use an effect in your inventory",
|
||||
"description_localizations": undefined,
|
||||
"name": "use",
|
||||
"name_localizations": undefined,
|
||||
"options": [
|
||||
{
|
||||
"autocomplete": undefined,
|
||||
"choices": [
|
||||
{
|
||||
"name": "Unclaimed Chance Up",
|
||||
"name_localizations": undefined,
|
||||
"value": "unclaimed",
|
||||
},
|
||||
],
|
||||
"description": "The effect id to use",
|
||||
"description_localizations": undefined,
|
||||
"max_length": undefined,
|
||||
"min_length": undefined,
|
||||
"name": "id",
|
||||
"name_localizations": undefined,
|
||||
"required": true,
|
||||
"type": 3,
|
||||
},
|
||||
],
|
||||
"type": 1,
|
||||
},
|
||||
{
|
||||
"description": "Buy more effects",
|
||||
"description_localizations": undefined,
|
||||
"name": "buy",
|
||||
"name_localizations": undefined,
|
||||
"options": [
|
||||
{
|
||||
"autocomplete": undefined,
|
||||
"choices": [
|
||||
{
|
||||
"name": "Unclaimed Chance Up",
|
||||
"name_localizations": undefined,
|
||||
"value": "unclaimed",
|
||||
},
|
||||
],
|
||||
"description": "The effect id to buy",
|
||||
"description_localizations": undefined,
|
||||
"max_length": undefined,
|
||||
"min_length": undefined,
|
||||
"name": "id",
|
||||
"name_localizations": undefined,
|
||||
"required": true,
|
||||
"type": 3,
|
||||
},
|
||||
{
|
||||
"autocomplete": undefined,
|
||||
"choices": undefined,
|
||||
"description": "The amount to buy",
|
||||
"description_localizations": undefined,
|
||||
"max_value": undefined,
|
||||
"min_value": 1,
|
||||
"name": "quantity",
|
||||
"name_localizations": undefined,
|
||||
"required": false,
|
||||
"type": 10,
|
||||
},
|
||||
],
|
||||
"type": 1,
|
||||
},
|
||||
],
|
||||
"type": 1,
|
||||
}
|
||||
`;
|
105
tests/commands/effects.test.ts
Normal file
105
tests/commands/effects.test.ts
Normal file
|
@ -0,0 +1,105 @@
|
|||
import Effects from "../../src/commands/effects";
|
||||
import List from "../../src/commands/effects/List";
|
||||
import Use from "../../src/commands/effects/Use";
|
||||
import Buy from "../../src/commands/effects/Buy";
|
||||
import AppLogger from "../../src/client/appLogger";
|
||||
import GenerateCommandInteractionMock from "../__functions__/discord.js/GenerateCommandInteractionMock";
|
||||
import { CommandInteraction } from "discord.js";
|
||||
|
||||
jest.mock("../../src/commands/effects/List");
|
||||
jest.mock("../../src/commands/effects/Use");
|
||||
jest.mock("../../src/commands/effects/Buy");
|
||||
jest.mock("../../src/client/appLogger");
|
||||
|
||||
beforeEach(() => {
|
||||
jest.resetAllMocks();
|
||||
});
|
||||
|
||||
test("EXPECT CommandBuilder to be defined", async () => {
|
||||
// Act
|
||||
const effects = new Effects();
|
||||
|
||||
// Assert
|
||||
expect(effects.CommandBuilder).toMatchSnapshot();
|
||||
});
|
||||
|
||||
describe("execute", () => {
|
||||
test("GIVEN interaction subcommand is list, EXPECT buy function called", async () => {
|
||||
// Arrange
|
||||
const interaction = GenerateCommandInteractionMock({
|
||||
subcommand: "list",
|
||||
});
|
||||
|
||||
// Act
|
||||
const effects = new Effects();
|
||||
await effects.execute(interaction as unknown as CommandInteraction);
|
||||
|
||||
// Assert
|
||||
expect(List).toHaveBeenCalledTimes(1);
|
||||
expect(List).toHaveBeenCalledWith(interaction);
|
||||
|
||||
expect(Use).not.toHaveBeenCalled();
|
||||
expect(Buy).not.toHaveBeenCalled();
|
||||
|
||||
expect(AppLogger.LogError).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("GIVEN interaction subcommand is use, EXPECT buy function called", async () => {
|
||||
// Arrange
|
||||
const interaction = GenerateCommandInteractionMock({
|
||||
subcommand: "use",
|
||||
});
|
||||
|
||||
// Act
|
||||
const effects = new Effects();
|
||||
await effects.execute(interaction as unknown as CommandInteraction);
|
||||
|
||||
// Assert
|
||||
expect(Use).toHaveBeenCalledTimes(1);
|
||||
expect(Use).toHaveBeenCalledWith(interaction);
|
||||
|
||||
expect(List).not.toHaveBeenCalled();
|
||||
expect(Buy).not.toHaveBeenCalled();
|
||||
|
||||
expect(AppLogger.LogError).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("GIVEN interaction subcommand is buy, EXPECT buy function called", async () => {
|
||||
// Arrange
|
||||
const interaction = GenerateCommandInteractionMock({
|
||||
subcommand: "buy",
|
||||
});
|
||||
|
||||
// Act
|
||||
const effects = new Effects();
|
||||
await effects.execute(interaction as unknown as CommandInteraction);
|
||||
|
||||
// Assert
|
||||
expect(Buy).toHaveBeenCalledTimes(1);
|
||||
expect(Buy).toHaveBeenCalledWith(interaction);
|
||||
|
||||
expect(List).not.toHaveBeenCalled();
|
||||
expect(Use).not.toHaveBeenCalled();
|
||||
|
||||
expect(AppLogger.LogError).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("GIVEN interaction subcommand is invalid, EXPECT error logged", async () => {
|
||||
// Arrange
|
||||
const interaction = GenerateCommandInteractionMock({
|
||||
subcommand: "invalid",
|
||||
});
|
||||
|
||||
// Act
|
||||
const effects = new Effects();
|
||||
await effects.execute(interaction as unknown as CommandInteraction);
|
||||
|
||||
// Assert
|
||||
expect(AppLogger.LogError).toHaveBeenCalledTimes(1);
|
||||
expect(AppLogger.LogError).toHaveBeenCalledWith("Commands/Effects", "Invalid subcommand: invalid");
|
||||
|
||||
expect(List).not.toHaveBeenCalled();
|
||||
expect(Use).not.toHaveBeenCalled();
|
||||
expect(Buy).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue