Compare commits
No commits in common. "f745fdfbca80ec1d00d3bc0ccb6eb71605601a60" and "d4c75845e56f7022c48bd5ef3a576f63571af0e6" have entirely different histories.
f745fdfbca
...
d4c75845e5
4 changed files with 3 additions and 155 deletions
|
@ -1,7 +1,5 @@
|
||||||
import {ButtonInteraction} from "discord.js";
|
import {ButtonInteraction} from "discord.js";
|
||||||
import AppLogger from "../../client/appLogger";
|
import AppLogger from "../../client/appLogger";
|
||||||
import EffectHelper from "../../helpers/EffectHelper";
|
|
||||||
import EmbedColours from "../../constants/EmbedColours";
|
|
||||||
|
|
||||||
export default class Buy {
|
export default class Buy {
|
||||||
public static async Execute(interaction: ButtonInteraction) {
|
public static async Execute(interaction: ButtonInteraction) {
|
||||||
|
@ -20,35 +18,6 @@ export default class Buy {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Confirm(interaction: ButtonInteraction) {
|
private static async Confirm(interaction: ButtonInteraction) {
|
||||||
const id = interaction.customId.split(" ")[3];
|
|
||||||
const quantity = interaction.customId.split(" ")[4];
|
|
||||||
|
|
||||||
if (!id || !quantity) {
|
|
||||||
AppLogger.LogError("Buy Confirm", "Not enough parameters");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const quantityNumber = Number(quantity);
|
|
||||||
|
|
||||||
if (!quantityNumber || quantityNumber < 1) {
|
|
||||||
AppLogger.LogError("Buy Confirm", "Invalid number");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const generatedEmbed = await EffectHelper.GenerateEffectBuyEmbed(interaction.user.id, id, quantityNumber, true);
|
|
||||||
|
|
||||||
if (typeof generatedEmbed == "string") {
|
|
||||||
await interaction.reply(generatedEmbed);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
generatedEmbed.embed.setColor(EmbedColours.Success);
|
|
||||||
generatedEmbed.embed.setFooter({ text: "Purchased" });
|
|
||||||
|
|
||||||
await interaction.update({
|
|
||||||
embeds: [ generatedEmbed.embed ],
|
|
||||||
components: [ generatedEmbed.row ],
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Cancel(interaction: ButtonInteraction) {
|
private static async Cancel(interaction: ButtonInteraction) {
|
||||||
|
|
|
@ -17,7 +17,5 @@ export default function GenerateButtonInteractionMock(): ButtonInteraction {
|
||||||
id: "userId",
|
id: "userId",
|
||||||
},
|
},
|
||||||
customId: "customId",
|
customId: "customId",
|
||||||
update: jest.fn(),
|
|
||||||
reply: jest.fn(),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -14,8 +14,6 @@ export type ButtonInteraction = {
|
||||||
id: string,
|
id: string,
|
||||||
} | null,
|
} | null,
|
||||||
customId: string,
|
customId: string,
|
||||||
update: jest.Func,
|
|
||||||
reply: jest.Func,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export type CommandInteraction = {
|
export type CommandInteraction = {
|
||||||
|
|
|
@ -1,124 +1,7 @@
|
||||||
import {ButtonInteraction} from "discord.js";
|
|
||||||
import Buy from "../../../src/buttonEvents/Effects/Buy";
|
|
||||||
import GenerateButtonInteractionMock from "../../__functions__/discord.js/GenerateButtonInteractionMock";
|
|
||||||
import { ButtonInteraction as ButtonInteractionType } from "../../__types__/discord.js";
|
|
||||||
import AppLogger from "../../../src/client/appLogger";
|
|
||||||
import EffectHelper from "../../../src/helpers/EffectHelper";
|
|
||||||
|
|
||||||
jest.mock("../../../src/client/appLogger");
|
|
||||||
jest.mock("../../../src/helpers/EffectHelper");
|
|
||||||
|
|
||||||
let interaction: ButtonInteractionType;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
jest.resetAllMocks();
|
|
||||||
|
|
||||||
interaction = GenerateButtonInteractionMock();
|
|
||||||
interaction.customId = "effects buy";
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("Execute", () => {
|
describe("Execute", () => {
|
||||||
test("GIVEN subaction is confirm, EXPECT confirm function executed", async () => {
|
test.todo("GIVEN subaction is confirm, EXPECT confirm function executed");
|
||||||
// Arrange
|
|
||||||
interaction.customId += " confirm";
|
|
||||||
|
|
||||||
const confirmSpy = jest.spyOn(Buy as any, "Confirm")
|
test.todo("GIVEN subaction is cancel, EXPECT cancel function executed");
|
||||||
.mockImplementation();
|
|
||||||
|
|
||||||
// Act
|
test.todo("GIVEN subaction is invalid, EXPECT error logged");
|
||||||
await Buy.Execute(interaction as unknown as ButtonInteraction);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(confirmSpy).toHaveBeenCalledTimes(1);
|
|
||||||
expect(confirmSpy).toHaveBeenCalledWith(interaction);
|
|
||||||
|
|
||||||
expect(AppLogger.LogError).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
test("GIVEN subaction is cancel, EXPECT cancel function executed", async () => {
|
|
||||||
// Arrange
|
|
||||||
interaction.customId += " cancel";
|
|
||||||
|
|
||||||
const cancelSpy = jest.spyOn(Buy as any, "Cancel")
|
|
||||||
.mockImplementation();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
await Buy.Execute(interaction as unknown as ButtonInteraction);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(cancelSpy).toHaveBeenCalledTimes(1)
|
|
||||||
expect(cancelSpy).toHaveBeenCalledWith(interaction);
|
|
||||||
|
|
||||||
expect(AppLogger.LogError).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
test("GIVEN subaction is invalid, EXPECT error logged", async () => {
|
|
||||||
// Arrange
|
|
||||||
interaction.customId += " invalid";
|
|
||||||
|
|
||||||
const confirmSpy = jest.spyOn(Buy as any, "Confirm")
|
|
||||||
.mockImplementation();
|
|
||||||
const cancelSpy = jest.spyOn(Buy as any, "Cancel")
|
|
||||||
.mockImplementation();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
await Buy.Execute(interaction as unknown as ButtonInteraction);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(AppLogger.LogError).toHaveBeenCalledTimes(1);
|
|
||||||
expect(AppLogger.LogError).toHaveBeenCalledWith("Buy", "Unknown subaction, effects invalid");
|
|
||||||
|
|
||||||
expect(confirmSpy).not.toHaveBeenCalled();
|
|
||||||
expect(cancelSpy).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("Confirm", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
interaction.customId += " confirm";
|
|
||||||
});
|
|
||||||
|
|
||||||
test("EXPECT success embed generated", async () => {
|
|
||||||
// Assert
|
|
||||||
interaction.customId += " id 1";
|
|
||||||
|
|
||||||
const embed = {
|
|
||||||
id: "embed",
|
|
||||||
};
|
|
||||||
const row = {
|
|
||||||
id: "row",
|
|
||||||
};
|
|
||||||
|
|
||||||
(EffectHelper.GenerateEffectBuyEmbed as jest.Mock).mockResolvedValue({
|
|
||||||
embed,
|
|
||||||
row,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Act
|
|
||||||
await Buy.Execute(interaction as unknown as ButtonInteraction);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(interaction.update).toHaveBeenCalledTimes(1);
|
|
||||||
expect(interaction.update).toHaveBeenCalledWith({
|
|
||||||
embeds: [ embed ],
|
|
||||||
components: [ row ],
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(EffectHelper.GenerateEffectBuyEmbed).toHaveBeenCalledTimes(1);
|
|
||||||
expect(EffectHelper.GenerateEffectBuyEmbed).toHaveBeenCalledWith("userId", "id", 1, true);
|
|
||||||
|
|
||||||
expect(interaction.reply).not.toHaveBeenCalled();
|
|
||||||
expect(AppLogger.LogError).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
test.todo("GIVEN id is not supplied, EXPECT error");
|
|
||||||
|
|
||||||
test.todo("GIVEN quantity is not supplied, EXPECT error");
|
|
||||||
|
|
||||||
test.todo("GIVEN quantity is not a number, EXPECT error");
|
|
||||||
|
|
||||||
test.todo("GIVEN quantity is 0, EXPECT error");
|
|
||||||
|
|
||||||
test.todo("GIVEN GenerateEffectBuyEmbed returns with a string, EXPECT error replied");
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue