56 lines
1.9 KiB
TypeScript
56 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { PartyCastTelemetry } from "./partyCastTelemetry";
|
|
|
|
describe("Balance Lab companion cast telemetry", () => {
|
|
it("counts completed damaging casts from party releases", () => {
|
|
const telemetry = new PartyCastTelemetry();
|
|
|
|
expect(telemetry.record({
|
|
actorGroup: "party",
|
|
sourceActorId: "party-ranger",
|
|
abilityId: "ranger-power-shot",
|
|
phase: "cast-start",
|
|
})).toBe(false);
|
|
expect(telemetry.record({
|
|
actorGroup: "party",
|
|
sourceActorId: "party-ranger",
|
|
abilityId: "ranger-power-shot",
|
|
phase: "release",
|
|
})).toBe(true);
|
|
});
|
|
|
|
it("counts one cast for a channel with several release pulses", () => {
|
|
const telemetry = new PartyCastTelemetry();
|
|
const cast = {
|
|
actorGroup: "party",
|
|
sourceActorId: "party-healer",
|
|
abilityId: "channel-heal",
|
|
};
|
|
|
|
expect(telemetry.record({ ...cast, phase: "cast-start" })).toBe(false);
|
|
expect(telemetry.record({ ...cast, phase: "release" })).toBe(true);
|
|
expect(telemetry.record({ ...cast, phase: "release" })).toBe(false);
|
|
});
|
|
|
|
it("counts instant releases and ignores canceled or non-party actions", () => {
|
|
const telemetry = new PartyCastTelemetry();
|
|
const cast = {
|
|
actorGroup: "party",
|
|
sourceActorId: "party-pyromancer",
|
|
abilityId: "instant-blast",
|
|
};
|
|
|
|
expect(telemetry.record({ ...cast, phase: "release", instantCast: true })).toBe(true);
|
|
expect(telemetry.record({ ...cast, phase: "cast-start" })).toBe(false);
|
|
expect(telemetry.record({ ...cast, phase: "cast-cancel" })).toBe(false);
|
|
expect(telemetry.record({ ...cast, phase: "release" })).toBe(false);
|
|
expect(telemetry.record({ ...cast, actorGroup: "player", phase: "release", instantCast: true })).toBe(false);
|
|
expect(telemetry.record({
|
|
...cast,
|
|
abilityId: "party-auto-attack",
|
|
phase: "release",
|
|
instantCast: true,
|
|
})).toBe(false);
|
|
});
|
|
});
|