import { describe, expect, it, vi } from "vitest" ;
import { resolvePreparedReplyQueueState } from "./get-reply-run-queue.js" ;
describe("resolvePreparedReplyQueueState" , () => {
it("continues immediately when queue policy does not require waiting" , async () => {
const resolveBusyState = vi.fn(() => ({
activeSessionId: undefined,
isActive: false ,
isStreaming: false ,
}));
const result = await resolvePreparedReplyQueueState({
activeRunQueueAction: "enqueue-followup" ,
activeSessionId: undefined,
queueMode: "followup" ,
sessionKey: "session-key" ,
sessionId: "session-1" ,
abortActiveRun: vi.fn(),
waitForActiveRunEnd: vi.fn(),
refreshPreparedState: vi.fn(),
resolveBusyState,
});
expect(result).toEqual({
kind: "continue" ,
busyState: { activeSessionId: undefined, isActive: false , isStreaming: false },
});
expect(resolveBusyState).toHaveBeenCalledOnce();
});
it("aborts and waits for interrupt mode before continuing" , async () => {
const abortActiveRun = vi.fn(() => true );
const waitForActiveRunEnd = vi.fn(async () => undefined);
const refreshPreparedState = vi.fn(async () => undefined);
const resolveBusyState = vi.fn(() => ({
activeSessionId: undefined,
isActive: false ,
isStreaming: false ,
}));
const result = await resolvePreparedReplyQueueState({
activeRunQueueAction: "run-now" ,
activeSessionId: "session-active" ,
queueMode: "interrupt" ,
sessionKey: "session-key" ,
sessionId: "session-1" ,
abortActiveRun,
waitForActiveRunEnd,
refreshPreparedState,
resolveBusyState,
});
expect(abortActiveRun).toHaveBeenCalledWith("session-active" );
expect(waitForActiveRunEnd).toHaveBeenCalledWith("session-active" );
expect(refreshPreparedState).toHaveBeenCalledOnce();
expect(result).toEqual({
kind: "continue" ,
busyState: { activeSessionId: undefined, isActive: false , isStreaming: false },
});
});
it("rechecks after wait and returns shutdown reply when still busy" , async () => {
const result = await resolvePreparedReplyQueueState({
activeRunQueueAction: "run-now" ,
activeSessionId: "session-active" ,
queueMode: "interrupt" ,
sessionKey: "session-key" ,
sessionId: "session-1" ,
abortActiveRun: vi.fn(() => true ),
waitForActiveRunEnd: vi.fn(async () => undefined),
refreshPreparedState: vi.fn(async () => undefined),
resolveBusyState: () => ({
activeSessionId: "session-after-wait" ,
isActive: true ,
isStreaming: false ,
}),
});
expect(result).toEqual({
kind: "reply" ,
reply: {
text: "⚠️ Previous run is still shutting down. Please try again in a moment." ,
},
});
});
});
Messung V0.5 in Prozent C=99 H=96 G=97
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland