diff --git a/src/buttonEvents/Effects/Buy.ts b/src/buttonEvents/Effects/Buy.ts index 1dad272..a7fc2c4 100644 --- a/src/buttonEvents/Effects/Buy.ts +++ b/src/buttonEvents/Effects/Buy.ts @@ -1,7 +1,5 @@ import {ButtonInteraction} from "discord.js"; import AppLogger from "../../client/appLogger"; -import EffectHelper from "../../helpers/EffectHelper"; -import EmbedColours from "../../constants/EmbedColours"; export default class Buy { public static async Execute(interaction: ButtonInteraction) { @@ -20,35 +18,6 @@ export default class Buy { } 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) { diff --git a/tests/__functions__/discord.js/GenerateButtonInteractionMock.ts b/tests/__functions__/discord.js/GenerateButtonInteractionMock.ts index 2199477..a1024ee 100644 --- a/tests/__functions__/discord.js/GenerateButtonInteractionMock.ts +++ b/tests/__functions__/discord.js/GenerateButtonInteractionMock.ts @@ -17,7 +17,5 @@ export default function GenerateButtonInteractionMock(): ButtonInteraction { id: "userId", }, customId: "customId", - update: jest.fn(), - reply: jest.fn(), }; } \ No newline at end of file diff --git a/tests/__types__/discord.js.ts b/tests/__types__/discord.js.ts index afd1469..e1f5961 100644 --- a/tests/__types__/discord.js.ts +++ b/tests/__types__/discord.js.ts @@ -14,8 +14,6 @@ export type ButtonInteraction = { id: string, } | null, customId: string, - update: jest.Func, - reply: jest.Func, } export type CommandInteraction = { diff --git a/tests/buttonEvents/Effects/Buy.test.ts b/tests/buttonEvents/Effects/Buy.test.ts index 10f4daf..f094e0c 100644 --- a/tests/buttonEvents/Effects/Buy.test.ts +++ b/tests/buttonEvents/Effects/Buy.test.ts @@ -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", () => { - test("GIVEN subaction is confirm, EXPECT confirm function executed", async () => { - // Arrange - interaction.customId += " confirm"; + test.todo("GIVEN subaction is confirm, EXPECT confirm function executed"); - const confirmSpy = jest.spyOn(Buy as any, "Confirm") - .mockImplementation(); + test.todo("GIVEN subaction is cancel, EXPECT cancel function executed"); - // Act - 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"); + test.todo("GIVEN subaction is invalid, EXPECT error logged"); });