import "reflect-metadata"; import { container } from "tsyringe"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { BotDifficultyHelper } from "@spt/helpers/BotDifficultyHelper"; describe("BotHelper", () => { let botDifficultyHelper: any; beforeEach(() => { botDifficultyHelper = container.resolve("BotDifficultyHelper"); }); afterEach(() => { vi.restoreAllMocks(); }); describe("convertBotDifficultyDropdownToBotDifficulty", () => { it("should return 'normal' when medium passed in", () => { expect(botDifficultyHelper.convertBotDifficultyDropdownToBotDifficulty("medium")).toBe("normal"); }); it("should return 'normal' when randomly capitalized medium passed in", () => { expect(botDifficultyHelper.convertBotDifficultyDropdownToBotDifficulty("mEdIuM")).toBe("normal"); }); it("should return passed in value when its not medium or random", () => { expect(botDifficultyHelper.convertBotDifficultyDropdownToBotDifficulty("test_value")).toBe("test_value"); }); it("should return randomised value when random passed in", () => { vi.spyOn(botDifficultyHelper, "chooseRandomDifficulty").mockReturnValue( "randomValue", ); expect(botDifficultyHelper.convertBotDifficultyDropdownToBotDifficulty("random")).toBe("randomValue"); }); }); describe("getBotDifficultySettings", () => { it("should return assault bot if invalid bot type provided", () => { vi.spyOn(botDifficultyHelper, "convertBotDifficultyDropdownToBotDifficulty").mockReturnValue( "normal", ); vi.spyOn(botDifficultyHelper.botHelper, "getBotTemplate").mockReturnValue( { difficulty: { normal: "test" } }, ); const warningLogSpy = vi.spyOn(botDifficultyHelper.logger, "warning"); const result = botDifficultyHelper.getBotDifficultySettings("INVALID_TYPE", "normal"); expect(result).toBe("test"); expect(warningLogSpy).toHaveBeenCalledTimes(1); }); }); });