import { describe, expect, it } from "vitest"; import generatedAbilityData from "./wow335AbilityData.generated.json"; import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; import { wow335PaladinConcentrationAuraPushbackReduction } from "./wow335PaladinConcentrationAuraRuntime"; describe("WoW 3.3.5 Paladin Concentration Aura pushback", () => { it("applies the generated base reduction and Improved Concentration Aura's flat effect modifier", () => { const aura = generatedAbilityData.classes.paladin.find( (ability) => ability.name === "Concentration Aura", ); const effect = aura?.ranks[0]?.effects.find((row) => row.auraType === 149); const talent = WOW335_TALENT_NODES.find((node) => node.name === "Improved Concentration Aura"); expect(effect?.basePoints).toBe(35); expect(talent?.rankEffects.slice(0, 3).map((rank) => ( rank.effects.find((row) => row.index === 0)?.basePoints ))).toEqual([7, 14, 20]); expect([0, 1, 2, 3].map((rank) => ( wow335PaladinConcentrationAuraPushbackReduction(true, rank) ))).toEqual([0.35, 0.42, 0.49, 0.55]); }); it("does nothing when Concentration Aura is absent and clamps invalid talent ranks", () => { expect(wow335PaladinConcentrationAuraPushbackReduction(false, 3)).toBe(0); expect(wow335PaladinConcentrationAuraPushbackReduction(true, -1)).toBe(0.35); expect(wow335PaladinConcentrationAuraPushbackReduction(true, 1.9)).toBe(0.42); expect(wow335PaladinConcentrationAuraPushbackReduction(true, 99)).toBe(0.55); expect(wow335PaladinConcentrationAuraPushbackReduction(true, Number.NaN)).toBe(0.35); }); });