Files
horus-3d/tests/unit/fleetLifecycleWorkflow.test.ts
Luke The Dev 4fa4f13558 First Release of Claw3D (#11)
Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
2026-03-19 23:14:04 -05:00

106 lines
2.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
buildReconcileTerminalPatch,
resolveReconcileEligibility,
resolveReconcileWaitOutcome,
resolveSummarySnapshotIntent,
} from "@/features/agents/operations/fleetLifecycleWorkflow";
describe("fleetLifecycleWorkflow", () => {
it("returns summary snapshot skip when no valid session keys exist", () => {
expect(
resolveSummarySnapshotIntent({
agents: [
{ sessionCreated: false, sessionKey: "agent:agent-1:main" },
{ sessionCreated: true, sessionKey: "" },
{ sessionCreated: true, sessionKey: " " },
],
maxKeys: 64,
})
).toEqual({ kind: "skip" });
});
it("returns summary snapshot fetch intent when session keys are present", () => {
expect(
resolveSummarySnapshotIntent({
agents: [
{ sessionCreated: true, sessionKey: "agent:agent-1:main" },
{ sessionCreated: true, sessionKey: "agent:agent-1:main" },
{ sessionCreated: true, sessionKey: "agent:agent-2:main" },
{ sessionCreated: true, sessionKey: "agent:agent-3:main" },
],
maxKeys: 2,
})
).toEqual({
kind: "fetch",
keys: ["agent:agent-1:main", "agent:agent-2:main"],
limit: 8,
maxChars: 240,
});
});
it("maps reconcile wait result ok/error to idle/error terminal patch", () => {
expect(resolveReconcileWaitOutcome("ok")).toBe("ok");
expect(resolveReconcileWaitOutcome("error")).toBe("error");
expect(resolveReconcileWaitOutcome("running")).toBeNull();
expect(buildReconcileTerminalPatch({ outcome: "ok" })).toEqual({
status: "idle",
runId: null,
runStartedAt: null,
streamText: null,
thinkingTrace: null,
});
expect(buildReconcileTerminalPatch({ outcome: "error" })).toEqual({
status: "error",
runId: null,
runStartedAt: null,
streamText: null,
thinkingTrace: null,
});
});
it("rejects reconcile intent for non-running or missing-run agents", () => {
expect(
resolveReconcileEligibility({
status: "idle",
sessionCreated: true,
runId: "run-1",
})
).toEqual({
shouldCheck: false,
reason: "not-running",
});
expect(
resolveReconcileEligibility({
status: "running",
sessionCreated: false,
runId: "run-1",
})
).toEqual({
shouldCheck: false,
reason: "not-session-created",
});
expect(
resolveReconcileEligibility({
status: "running",
sessionCreated: true,
runId: " ",
})
).toEqual({
shouldCheck: false,
reason: "missing-run-id",
});
expect(
resolveReconcileEligibility({
status: "running",
sessionCreated: true,
runId: "run-1",
})
).toEqual({
shouldCheck: true,
reason: "ok",
});
});
});