31 lines
1.6 KiB
TypeScript
31 lines
1.6 KiB
TypeScript
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);
|
|
});
|
|
});
|