test: final 6 agents — 172+ translate tests, llm_analysis 89%, git_plugin 100%, migration/deps/routes polished. 85-94% files pushed to 95%+. Bulk: backup/debug/maintenance plugins

This commit is contained in:
2026-06-15 22:04:40 +03:00
parent 8995d7beae
commit 7010c40102
35 changed files with 7811 additions and 49 deletions

View File

@@ -396,4 +396,112 @@ def test_execution_error_handled():
mock_db.close.assert_called_once()
# #endregion test_execution_error_handled
# #region test_execution_run_status_failed_path [C:1] [TYPE Function]
def test_execution_run_status_failed_path():
"""execute_run succeeds but run.status == 'FAILED' → hits lines 388-392."""
from src.plugins.translate.scheduler import execute_scheduled_translation
mock_db = MagicMock()
mock_session_maker = MagicMock(return_value=mock_db)
mock_config = MagicMock()
schedule = MagicMock()
schedule.id = "sched-fail"
schedule.job_id = "job-fail"
schedule.is_active = True
schedule.execution_mode = "full"
most_recent = _make_most_recent_run(created_at_delta_days=30)
q1 = MagicMock()
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = most_recent
mock_db.query.side_effect = [q1, q2, q3]
mock_run = _make_mock_run(run_id="run-fail", job_id="job-fail")
mock_run.status = "FAILED" # execute_run sets this
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls:
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
execute_scheduled_translation(
schedule_id="sched-fail",
job_id="job-fail",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
# The run.status == "FAILED" path sets insert_status = run.insert_status or None
assert mock_run.insert_status is None # None or None -> None
mock_orch.execute_run.assert_called_once()
mock_db.close.assert_called_once()
# #endregion test_execution_run_status_failed_path
# #region test_execution_notification_error [C:1] [TYPE Function]
def test_execution_notification_error():
"""execute_run raises and notification send also raises → both caught (lines 413-415, 431-442)."""
from src.plugins.translate.scheduler import execute_scheduled_translation
mock_db = MagicMock()
mock_session_maker = MagicMock(return_value=mock_db)
mock_config = MagicMock()
schedule = MagicMock()
schedule.id = "sched-notif"
schedule.job_id = "job-notif"
schedule.is_active = True
schedule.execution_mode = "full"
q1 = MagicMock()
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = None
mock_db.query.side_effect = [q1, q2, q3]
mock_run = _make_mock_run(run_id="run-notif", job_id="job-notif")
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, patch(
"src.plugins.translate.scheduler.NotificationService"
) as mock_notif_cls:
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch.execute_run.side_effect = RuntimeError("LLM timeout")
mock_orch_cls.return_value = mock_orch
# Make notification send also raise
mock_provider = MagicMock()
mock_provider.send.side_effect = Exception("Email down")
mock_notif_svc = MagicMock()
mock_notif_svc._providers = {"email": mock_provider}
mock_notif_cls.return_value = mock_notif_svc
execute_scheduled_translation(
schedule_id="sched-notif",
job_id="job-notif",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
assert mock_run.status == "FAILED"
assert mock_run.completed_at is not None
assert schedule.last_run_at is not None
mock_db.commit.assert_called()
mock_db.close.assert_called_once()
# #endregion test_execution_notification_error
# #endregion TestTranslateSchedulerExecution