forked from phenom/healer-man
Release Healer Man 0.1.9
This commit is contained in:
1 parent
c245a199b6
commit
d060296ade
74 files changed
+5901
-334
No files matched your search
@@ -1,6 +1,13 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import type { AuraDefinition } from "../game/combatAuras";
|
||||
import { auraDefinitionDisplaysInStrip, auraDefinitionIcon } from "./AuraStrip";
|
||||
import type { ActiveAura, AuraDefinition } from "../game/combatAuras";
|
||||
import {
|
||||
LONG_TERM_AURA_DURATION_MS,
|
||||
auraDisplayName,
|
||||
auraDefinitionDisplaysInStrip,
|
||||
auraDefinitionIcon,
|
||||
auraDefinitionIsLongTerm,
|
||||
auraDescription,
|
||||
} from "./AuraStrip";
|
||||
|
||||
function aura(overrides: Partial<AuraDefinition> = {}): AuraDefinition {
|
||||
return {
|
||||
@@ -12,6 +19,22 @@ function aura(overrides: Partial<AuraDefinition> = {}): AuraDefinition {
|
||||
};
|
||||
}
|
||||
|
||||
function activeAura(definition: AuraDefinition, remainingAbsorb = 0): ActiveAura {
|
||||
return {
|
||||
instanceId: "test-aura-instance",
|
||||
definition,
|
||||
sourceId: "source",
|
||||
targetId: "target",
|
||||
appliedAt: 1_000,
|
||||
expiresAt: definition.durationMs === null ? null : 1_000 + definition.durationMs,
|
||||
stacks: 1,
|
||||
absorbs: remainingAbsorb > 0
|
||||
? [{ id: "test-absorb", remaining: remainingAbsorb }]
|
||||
: [],
|
||||
procStates: [],
|
||||
};
|
||||
}
|
||||
|
||||
describe("aura strip visibility", () => {
|
||||
it("shows ordinary auras and suppresses periodic shadow auras with dedicated timers", () => {
|
||||
expect(auraDefinitionDisplaysInStrip(aura())).toBe(true);
|
||||
@@ -24,4 +47,28 @@ describe("aura strip visibility", () => {
|
||||
);
|
||||
expect(auraDefinitionIcon(aura())).toBeNull();
|
||||
});
|
||||
|
||||
it("removes internal DBC and aura identifiers from player-facing names", () => {
|
||||
expect(auraDisplayName(aura({ name: "Power Word: Fortitude (DBC 1243, Aura 29)" }))).toBe(
|
||||
"Power Word: Fortitude",
|
||||
);
|
||||
expect(auraDisplayName(aura({ name: "Arcane Intellect (Aura 13)" }))).toBe(
|
||||
"Arcane Intellect",
|
||||
);
|
||||
});
|
||||
|
||||
it("classifies permanent and one-minute effects as long-term without using remaining time", () => {
|
||||
expect(auraDefinitionIsLongTerm(aura({ durationMs: null }))).toBe(true);
|
||||
expect(auraDefinitionIsLongTerm(aura({ durationMs: LONG_TERM_AURA_DURATION_MS }))).toBe(true);
|
||||
expect(auraDefinitionIsLongTerm(aura({ durationMs: LONG_TERM_AURA_DURATION_MS - 1 }))).toBe(false);
|
||||
});
|
||||
|
||||
it("prefers authored tooltip copy and explains absorb-only fallback auras", () => {
|
||||
expect(auraDescription(activeAura(aura({ description: "Raises armor by 10%." })))).toBe(
|
||||
"Raises armor by 10%.",
|
||||
);
|
||||
expect(auraDescription(activeAura(aura({
|
||||
absorbs: [{ id: "test-absorb", amount: 250 }],
|
||||
}), 175))).toBe("Absorbs up to 175 incoming damage.");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user