test: 5 final agents — fix 40+ failures, llm_analysis 80%+, git_plugin 90%+, routes 90-98%, services 98-100%, core 90-100%. Coverage: real 87%, target 95%+
This commit is contained in:
@@ -126,6 +126,56 @@ class TestHandleListMaintenanceEvents:
|
||||
)
|
||||
assert "Нет событий" in text
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_with_expired_events(self, intent, current_user):
|
||||
"""Expired events trigger end-task creation."""
|
||||
from src.api.routes.assistant._tool_maintenance import handle_list_maintenance_events
|
||||
|
||||
task_manager = MagicMock()
|
||||
task_manager.create_task = AsyncMock(return_value=MagicMock(id="task-exp-1"))
|
||||
config_manager = MagicMock()
|
||||
db = MagicMock()
|
||||
|
||||
expired_events = [
|
||||
_make_maintenance_event("evt-exp-1", "ACTIVE"),
|
||||
_make_maintenance_event("evt-exp-2", "PARTIAL"),
|
||||
]
|
||||
active_events = [_make_maintenance_event("evt-act-1", "ACTIVE")]
|
||||
completed_events = [_make_maintenance_event("evt-cmp-1", "COMPLETED")]
|
||||
|
||||
class CountMock:
|
||||
"""Mock that returns a specific count value."""
|
||||
def __init__(self, val):
|
||||
self._val = val
|
||||
def count(self):
|
||||
return self._val
|
||||
|
||||
def query_side_effect(model):
|
||||
q = MagicMock()
|
||||
if model.__name__ == "MaintenanceEvent":
|
||||
# First .filter(...).all() → expired events
|
||||
# Then .filter(...).order_by().all() → active
|
||||
# Then .filter(...).order_by().limit().all() → completed
|
||||
f1 = MagicMock()
|
||||
f1.all.side_effect = [expired_events, active_events, completed_events]
|
||||
q.filter.return_value = f1
|
||||
# For the order_by path used in active/completed:
|
||||
f1.order_by.return_value.all.return_value = active_events
|
||||
f1.order_by.return_value.limit.return_value.all.return_value = completed_events
|
||||
elif model.__name__ == "MaintenanceDashboardState":
|
||||
q.filter.return_value.filter.return_value.count.return_value = 2
|
||||
return q
|
||||
|
||||
db.query.side_effect = query_side_effect
|
||||
|
||||
text, task_id, actions = await handle_list_maintenance_events(
|
||||
intent, current_user, task_manager, config_manager, db
|
||||
)
|
||||
assert "Активные" in text
|
||||
assert "Завершённые" in text
|
||||
# Should have created tasks for expired events
|
||||
assert task_manager.create_task.call_count >= 2
|
||||
|
||||
|
||||
class TestHandleStartMaintenance:
|
||||
"""handle_start_maintenance — starting maintenance events."""
|
||||
|
||||
Reference in New Issue
Block a user