* fix(app): enforce canonical stream sequencing and init resolution * refactor: extract timeline and stream reducers to pure functions
30 lines
961 B
TypeScript
30 lines
961 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import type { AgentStreamEventPayload } from "@server/shared/messages";
|
|
import { deriveOptimisticLifecycleStatus } from "./session-stream-lifecycle";
|
|
|
|
const turnCompletedEvent: AgentStreamEventPayload = {
|
|
type: "turn_completed",
|
|
provider: "claude",
|
|
};
|
|
|
|
const turnFailedEvent: AgentStreamEventPayload = {
|
|
type: "turn_failed",
|
|
provider: "claude",
|
|
error: "failed",
|
|
};
|
|
|
|
describe("session stream lifecycle helpers", () => {
|
|
it("derives optimistic terminal lifecycle only when current status is running", () => {
|
|
expect(deriveOptimisticLifecycleStatus("running", turnCompletedEvent)).toBe(
|
|
"idle"
|
|
);
|
|
expect(deriveOptimisticLifecycleStatus("running", turnFailedEvent)).toBe(
|
|
"error"
|
|
);
|
|
expect(deriveOptimisticLifecycleStatus("initializing", turnCompletedEvent)).toBe(
|
|
null
|
|
);
|
|
expect(deriveOptimisticLifecycleStatus("idle", turnFailedEvent)).toBe(null);
|
|
});
|
|
});
|