import { describe, expect, it } from "vitest"; import { wow335WarriorImprovedVictoryRushCooldownAuraDefinition, wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent, wow335WarriorImprovedVictoryRushProfile, wow335WarriorImprovedVictoryRushReadyAuraDefinition, wow335WarriorImprovedVictoryRushShouldProc, wow335WarriorImprovedVictoryRushThreatScale, } from "./wow335WarriorVictoryRushRuntime"; describe("WoW Warrior Improved Victory Rush profile", () => { it("reads its generated rank proc, critical, threat, window, and internal cooldown values", () => { expect([1, 2, 3].map((rank) => wow335WarriorImprovedVictoryRushProfile(rank))).toEqual([ { rank: 1, parryProcChancePercent: 33, criticalChanceBonusPercent: 20, additionalThreatPercent: 33, readyDurationMs: 10_000, internalCooldownMs: 12_000, }, { rank: 2, parryProcChancePercent: 66, criticalChanceBonusPercent: 40, additionalThreatPercent: 66, readyDurationMs: 10_000, internalCooldownMs: 12_000, }, { rank: 3, parryProcChancePercent: 100, criticalChanceBonusPercent: 60, additionalThreatPercent: 100, readyDurationMs: 10_000, internalCooldownMs: 12_000, }, ]); }); it("only arms after an eligible parry, while the internal cooldown is ready", () => { expect(wow335WarriorImprovedVictoryRushShouldProc(1, true, false, 32.99)).toBe(true); expect(wow335WarriorImprovedVictoryRushShouldProc(1, true, false, 33)).toBe(false); expect(wow335WarriorImprovedVictoryRushShouldProc(3, false, false, 0)).toBe(false); expect(wow335WarriorImprovedVictoryRushShouldProc(3, true, true, 0)).toBe(false); expect(wow335WarriorImprovedVictoryRushShouldProc(0, true, false, 0)).toBe(false); }); it("adds the generated critical chance to Victory Rush and doubles threat only from its parry window", () => { expect(wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent(3, "Victory Rush")).toBe(60); expect(wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent(3, "Whirlwind")).toBe(0); expect(wow335WarriorImprovedVictoryRushThreatScale(3, "Victory Rush", true)).toBe(2); expect(wow335WarriorImprovedVictoryRushThreatScale(2, "Victory Rush", true)).toBeCloseTo(1.66, 10); expect(wow335WarriorImprovedVictoryRushThreatScale(3, "Victory Rush", false)).toBe(1); expect(wow335WarriorImprovedVictoryRushReadyAuraDefinition(3)).toMatchObject({ durationMs: 10_000, utilityTags: ["wow335-warrior-improved-victory-rush-ready"], }); expect(wow335WarriorImprovedVictoryRushCooldownAuraDefinition(3)).toMatchObject({ durationMs: 12_000, hideFromAuraStrip: true, utilityTags: ["wow335-warrior-improved-victory-rush-cooldown"], }); }); });