import { describe, expect, it } from "vitest"; import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; import { ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION, ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, } from "./romDruidMageInspirationRuntime"; import { ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION, ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, } from "./romMageDruidGreenGuardianRuntime"; describe("current CoA Druid/Mage Inspiration catalog entry", () => { const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID && ability.classId === "rom-druid" && ability.secondaryClassId === "rom-mage"); it("updates the existing generated exact-pair passive without adding a skill row", () => { expect(passive).toBeDefined(); expect(passive).toMatchObject({ classId: "rom-druid", secondaryClassId: "rom-mage", dbcSpellId: ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, name: "Inspiration", unlockLevel: 30, sourceUnlockLevel: 30, passive: true, romSkillGroup: "passive", target: "self", castTimeMs: 0, cooldownMs: 0, costs: [], effects: [], }); expect(passive?.id).toBe("rom-druid-rom-mage-elite-30"); expect(ROM_ALL_ABILITIES.filter((ability) => ability.dbcSpellId === ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID)) .toHaveLength(1); }); it("uses current CoA spend-trigger values in both the passive and its rank tooltip", () => { expect(passive?.description).toBe(ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION); expect(passive?.description).toContain("whenever you spend Nature's Power"); expect(passive?.description).toContain("Physical Attack Speed and Casting Speed by 2% per stack"); expect(passive?.description).toContain("up to 10 stacks for 10 seconds"); expect(passive?.description).toContain("cannot be proven identical to local Fireball 490204"); expect(passive?.description).not.toMatch(/chance.*Fireball|next spell.*1 second/i); expect(passive?.ranks).toHaveLength(1); expect(passive?.ranks?.[0]).toMatchObject({ spellId: ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, costs: [], effects: [], description: ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION, }); }); }); describe("current CoA Mage/Druid Green Guardian catalog entry", () => { const skill = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID && ability.classId === "rom-mage" && ability.secondaryClassId === "rom-druid"); it("turns only the existing exact-pair row into the current level-25 instant self skill", () => { expect(skill).toMatchObject({ id: "rom-mage-rom-druid-elite-30", classId: "rom-mage", secondaryClassId: "rom-druid", dbcSpellId: ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, unlockLevel: 25, passive: false, romSkillGroup: "elite", target: "self", castMode: "instant", castTimeMs: 0, cooldownMs: 0, costs: [], effects: [{ kind: "apply-aura" }], }); expect(skill?.description).toBe(ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION); expect(skill?.ranks?.[0]).toMatchObject({ level: 25, spellId: ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, castTimeMs: 0, cooldownMs: 0, costs: [], description: ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION, effects: [{ kind: "apply-aura" }], }); expect(ROM_ALL_ABILITIES.filter((ability) => ability.dbcSpellId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID)) .toHaveLength(1); }); });