@@ -34,6 +34,14 @@ function mockSuccessfulModelFallback() {
|
34 | 34 | }); |
35 | 35 | } |
36 | 36 | |
| 37 | +function requireFirstMockCall<T>(mock: { mock: { calls: T[][] } }, label: string): T[] { |
| 38 | +const call = mock.mock.calls.at(0); |
| 39 | +if (!call) { |
| 40 | +throw new Error(`expected ${label} call`); |
| 41 | +} |
| 42 | +return call; |
| 43 | +} |
| 44 | + |
37 | 45 | async function runFastModeCase(params: { |
38 | 46 | configFastMode: boolean; |
39 | 47 | expectedFastMode: boolean; |
@@ -96,7 +104,7 @@ async function runFastModeCase(params: {
|
96 | 104 | |
97 | 105 | expect(result.status).toBe("ok"); |
98 | 106 | expect(runEmbeddedPiAgentMock).toHaveBeenCalledOnce(); |
99 | | -const [embeddedRunParams] = runEmbeddedPiAgentMock.mock.calls[0]; |
| 107 | +const [embeddedRunParams] = requireFirstMockCall(runEmbeddedPiAgentMock, "embedded run"); |
100 | 108 | expect(embeddedRunParams.provider).toBe("openai"); |
101 | 109 | expect(embeddedRunParams.model).toBe(EXPECTED_OPENAI_MODEL); |
102 | 110 | expect(embeddedRunParams.fastMode).toBe(params.expectedFastMode); |
@@ -106,7 +114,10 @@ async function runFastModeCase(params: {
|
106 | 114 | expect(embeddedRunParams.allowGatewaySubagentBinding).toBe(true); |
107 | 115 | if (params.expectedRetiredSessionId) { |
108 | 116 | expect(retireSessionMcpRuntimeMock).toHaveBeenCalledOnce(); |
109 | | -const [retireParams] = retireSessionMcpRuntimeMock.mock.calls[0]; |
| 117 | +const [retireParams] = requireFirstMockCall( |
| 118 | +retireSessionMcpRuntimeMock, |
| 119 | +"retire session mcp runtime", |
| 120 | +); |
110 | 121 | expect(retireParams.sessionId).toBe(params.expectedRetiredSessionId); |
111 | 122 | expect(retireParams.reason).toBe("cron-session-rollover"); |
112 | 123 | return; |
|