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

62 lines
2.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
ROM_WARLOCK_MAGE_SOUL_BRAND,
romWarlockMageSoulBrandEffects,
type RomWarlockMageSoulBrandBuild,
} from "./romWarlockMageSoulBrand";
const build: RomWarlockMageSoulBrandBuild = {
classId: "rom-warlock",
secondaryClassId: "rom-mage",
learnedPassiveSpellIds: [498705],
};
describe("Warlock/Mage Soul Brand CoA helper", () => {
it("adds a four-stack +2% elemental damage-taken debuff and 1 Psi on Fire damage", () => {
expect(romWarlockMageSoulBrandEffects(build, { school: "fire", damageLanded: true })).toEqual([
expect.objectContaining({
kind: "apply-aura",
recipient: "ability-target",
aura: expect.objectContaining({
id: "rom-warlock-mage-soul-brand-498705",
disposition: "debuff",
durationMs: 20_000,
maxStacks: 4,
stackBehavior: "add",
modifiers: expect.arrayContaining([
...ROM_WARLOCK_MAGE_SOUL_BRAND.elementalDamageSchools.map((school) => expect.objectContaining({
kind: "damage",
direction: "taken",
school,
operation: "percent",
value: 0.02,
perStack: true,
})),
]),
}),
}),
{ kind: "resource", resource: "psi", amount: 1 },
]);
});
it("accepts landed Fire DoT pulses and rejects misses or other schools", () => {
expect(romWarlockMageSoulBrandEffects(build, {
school: "fire", damageLanded: true, periodic: true,
})).not.toBeNull();
expect(romWarlockMageSoulBrandEffects(build, { school: "fire", damageLanded: false })).toBeNull();
expect(romWarlockMageSoulBrandEffects(build, { school: "shadow", damageLanded: true })).toBeNull();
});
it("requires the exact Warlock/Mage pair and learned passive", () => {
expect(romWarlockMageSoulBrandEffects({ ...build, secondaryClassId: "rom-priest" }, {
school: "fire", damageLanded: true,
})).toBeNull();
expect(romWarlockMageSoulBrandEffects({ ...build, classId: "rom-mage" }, {
school: "fire", damageLanded: true,
})).toBeNull();
expect(romWarlockMageSoulBrandEffects({ ...build, learnedPassiveSpellIds: [] }, {
school: "fire", damageLanded: true,
})).toBeNull();
});
});