Files
healer-man/src/game/wow335WarriorVictoryRushRuntime.test.ts
T
2026-10-02 10:38:12 -04:00

66 lines
2.8 KiB
TypeScript

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"],
});
});
});