Skip to content

Commit ea08f5e

Browse files
jopemachineclaude
andcommitted
fix(BA-4974): replace xfail with proper agent_registry mocking for transit status tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 401ba42 commit ea08f5e

1 file changed

Lines changed: 27 additions & 6 deletions

File tree

tests/component/session/test_session_lifecycle.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from dataclasses import dataclass
77
from datetime import datetime
88
from typing import Any
9+
from unittest.mock import AsyncMock, MagicMock
910

1011
import pytest
1112
import sqlalchemy as sa
@@ -176,29 +177,49 @@ async def test_restart_nonexistent_session_returns_not_found(
176177
class TestSessionStatusTransition:
177178
"""Test session status transit endpoint (POST /_/transit-status)."""
178179

179-
@pytest.mark.xfail(
180-
reason="Requires live agent — agent_registry mock does not return proper transit result"
181-
)
182180
async def test_transit_single_session_status(
183181
self,
184182
admin_registry: BackendAIClientRegistry,
185183
session_seed: SessionSeedData,
184+
agent_registry: AsyncMock,
186185
) -> None:
186+
mock_lifecycle_mgr = AsyncMock()
187+
mock_row = MagicMock()
188+
mock_row.id = session_seed.session_id
189+
mock_row.status = SessionStatus.RUNNING
190+
mock_lifecycle_mgr.transit_session_status.return_value = [(mock_row, False)]
191+
mock_lifecycle_mgr.deregister_status_updatable_session.return_value = 0
192+
agent_registry.session_lifecycle_mgr = mock_lifecycle_mgr
193+
187194
result = await admin_registry.session.transit_session_status(
188195
TransitSessionStatusRequest(ids=[session_seed.session_id]),
189196
)
190197
assert isinstance(result, TransitSessionStatusResponse)
191198
assert isinstance(result.session_status_map, dict)
192199

193-
@pytest.mark.xfail(
194-
reason="Requires live agent — agent_registry mock does not return proper transit result"
195-
)
196200
async def test_transit_multiple_sessions(
197201
self,
198202
admin_registry: BackendAIClientRegistry,
199203
session_seed: SessionSeedData,
200204
terminated_session_seed: SessionSeedData,
205+
agent_registry: AsyncMock,
201206
) -> None:
207+
mock_lifecycle_mgr = AsyncMock()
208+
mock_row_running = MagicMock()
209+
mock_row_running.id = session_seed.session_id
210+
mock_row_running.status = SessionStatus.RUNNING
211+
212+
mock_row_terminated = MagicMock()
213+
mock_row_terminated.id = terminated_session_seed.session_id
214+
mock_row_terminated.status = SessionStatus.TERMINATED
215+
216+
mock_lifecycle_mgr.transit_session_status.side_effect = [
217+
[(mock_row_running, False)],
218+
[(mock_row_terminated, False)],
219+
]
220+
mock_lifecycle_mgr.deregister_status_updatable_session.return_value = 0
221+
agent_registry.session_lifecycle_mgr = mock_lifecycle_mgr
222+
202223
result = await admin_registry.session.transit_session_status(
203224
TransitSessionStatusRequest(
204225
ids=[session_seed.session_id, terminated_session_seed.session_id],

0 commit comments

Comments
 (0)