| import { describe, expect, it } from "vitest"; |
| import { |
| makeIsolatedAgentTurnJob, |
| makeIsolatedAgentTurnParams, |
| setupRunCronIsolatedAgentTurnSuite, |
| } from "./run.suite-helpers.js"; |
| import { |
| loadRunCronIsolatedAgentTurn, |
| resolveAgentModelFallbacksOverrideMock, |
| runWithModelFallbackMock, |
| } from "./run.test-harness.js"; |
|
|
| const runCronIsolatedAgentTurn = await loadRunCronIsolatedAgentTurn(); |
|
|
| |
|
|
| describe("runCronIsolatedAgentTurn — payload.fallbacks", () => { |
| setupRunCronIsolatedAgentTurnSuite(); |
|
|
| it.each([ |
| { |
| name: "passes payload.fallbacks as fallbacksOverride when defined", |
| payload: { |
| kind: "agentTurn", |
| message: "test", |
| fallbacks: ["anthropic/claude-sonnet-4-6", "openai/gpt-5"], |
| }, |
| expectedFallbacks: ["anthropic/claude-sonnet-4-6", "openai/gpt-5"], |
| }, |
| { |
| name: "falls back to agent-level fallbacks when payload.fallbacks is undefined", |
| payload: { kind: "agentTurn", message: "test" }, |
| agentFallbacks: ["openai/gpt-4o"], |
| expectedFallbacks: ["openai/gpt-4o"], |
| }, |
| { |
| name: "payload.fallbacks=[] disables fallbacks even when agent config has them", |
| payload: { kind: "agentTurn", message: "test", fallbacks: [] }, |
| agentFallbacks: ["openai/gpt-4o"], |
| expectedFallbacks: [], |
| }, |
| ])("$name", async ({ payload, agentFallbacks, expectedFallbacks }) => { |
| if (agentFallbacks) { |
| resolveAgentModelFallbacksOverrideMock.mockReturnValue(agentFallbacks); |
| } |
|
|
| const result = await runCronIsolatedAgentTurn( |
| makeIsolatedAgentTurnParams({ |
| job: makeIsolatedAgentTurnJob({ payload }), |
| }), |
| ); |
|
|
| expect(result.status).toBe("ok"); |
| expect(runWithModelFallbackMock).toHaveBeenCalledOnce(); |
| expect(runWithModelFallbackMock.mock.calls[0][0].fallbacksOverride).toEqual(expectedFallbacks); |
| }); |
| }); |
|
|