38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { romPriestScoutSaintsBlessingDamageMultiplier } from "./romPriestScoutSaintsBlessingDamage";
|
|
|
|
const base = {
|
|
primaryClassId: "rom-priest",
|
|
secondaryClassId: "rom-scout",
|
|
learnedPassiveSpellIds: [493_039],
|
|
};
|
|
|
|
describe("CoA Priest/Scout Saint's Blessing execute damage rider", () => {
|
|
it("grants +28% damage below, but not at, the 30% target-health threshold", () => {
|
|
expect(romPriestScoutSaintsBlessingDamageMultiplier({ ...base, targetHealthPercent: 0.299 }))
|
|
.toBeCloseTo(1.28);
|
|
expect(romPriestScoutSaintsBlessingDamageMultiplier({ ...base, targetHealthPercent: 0.3 }))
|
|
.toBe(1);
|
|
});
|
|
|
|
it("requires the exact Priest-primary/Scout-secondary pair and learned passive", () => {
|
|
expect(romPriestScoutSaintsBlessingDamageMultiplier({
|
|
...base,
|
|
primaryClassId: "rom-scout",
|
|
secondaryClassId: "rom-priest",
|
|
targetHealthPercent: 0.1,
|
|
})).toBe(1);
|
|
expect(romPriestScoutSaintsBlessingDamageMultiplier({
|
|
...base,
|
|
learnedPassiveSpellIds: [],
|
|
targetHealthPercent: 0.1,
|
|
})).toBe(1);
|
|
});
|
|
|
|
it("does not apply to dead, invalid, or full-health targets", () => {
|
|
for (const targetHealthPercent of [0, 0.3, 1, Number.NaN, Number.POSITIVE_INFINITY]) {
|
|
expect(romPriestScoutSaintsBlessingDamageMultiplier({ ...base, targetHealthPercent })).toBe(1);
|
|
}
|
|
});
|
|
});
|