feat(scenarios): implement execution engine contracts

This commit is contained in:
2026-08-21 16:15:40 +03:00
parent adbea9db18
commit ffa4d6a85b
117 changed files with 9156 additions and 530 deletions

View File

@@ -76,7 +76,7 @@ def test_new_key_only_mode():
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None # no concurrent
q2.filter.return_value.order_by.return_value.all.return_value = []
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = most_recent
@@ -101,10 +101,9 @@ def test_new_key_only_mode():
execution_mode="new_key_only",
)
assert mock_run.trigger_type == "new_key_only", (
f"Expected trigger_type='new_key_only', got '{mock_run.trigger_type}'"
mock_orch.start_run.assert_called_once_with(
job_id="job-1", is_scheduled=True, trigger_type="new_key_only",
)
mock_orch.start_run.assert_called_once_with(job_id="job-1", is_scheduled=True)
# execute_background is called (fire-and-forget) instead of execute_run via runner.run
mock_orch_cls.execute_background.assert_called()
mock_db.close.assert_called_once()
@@ -132,7 +131,7 @@ def test_baseline_expired_fallback():
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q2.filter.return_value.order_by.return_value.all.return_value = []
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = most_recent
@@ -163,8 +162,8 @@ def test_baseline_expired_fallback():
execution_mode="new_key_only",
)
assert mock_run.trigger_type == "scheduled", (
f"Expected trigger_type='scheduled' (baseline expired), got '{mock_run.trigger_type}'"
mock_orch.start_run.assert_called_once_with(
job_id="job-1", is_scheduled=True, trigger_type="scheduled",
)
mock_event_log.log_event.assert_called_once()
@@ -199,7 +198,7 @@ def test_full_mode_default():
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q2.filter.return_value.order_by.return_value.all.return_value = []
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = most_recent
@@ -224,8 +223,8 @@ def test_full_mode_default():
execution_mode="full",
)
assert mock_run.trigger_type == "scheduled", (
f"Expected trigger_type='scheduled' for full mode, got '{mock_run.trigger_type}'"
mock_orch.start_run.assert_called_once_with(
job_id="job-1", is_scheduled=True, trigger_type="scheduled",
)
mock_orch_cls.execute_background.assert_called()
mock_db.close.assert_called_once()
@@ -320,7 +319,7 @@ def test_baseline_expired_full_mode():
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q2.filter.return_value.order_by.return_value.all.return_value = []
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = most_recent
@@ -351,7 +350,9 @@ def test_baseline_expired_full_mode():
execution_mode="full",
)
assert mock_run.trigger_type == "scheduled"
mock_orch.start_run.assert_called_once_with(
job_id="job-1", is_scheduled=True, trigger_type="scheduled",
)
mock_event_log.log_event.assert_called_once()
event_call = mock_event_log.log_event.call_args
assert event_call.kwargs["payload"]["reason"] == "baseline_expired"
@@ -378,7 +379,7 @@ def test_execution_error_handled():
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q2.filter.return_value.order_by.return_value.all.return_value = []
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = None
@@ -436,7 +437,7 @@ def test_execution_run_status_failed_path():
q1 = MagicMock()
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q2.filter.return_value.order_by.return_value.all.return_value = []
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = most_recent
mock_db.query.side_effect = [q1, q2, q3]
@@ -484,7 +485,7 @@ def test_execution_notification_error():
q1 = MagicMock()
q1.filter.return_value.first.return_value = schedule
q2 = MagicMock()
q2.filter.return_value.order_by.return_value.first.return_value = None
q2.filter.return_value.order_by.return_value.all.return_value = []
q3 = MagicMock()
q3.filter.return_value.order_by.return_value.first.return_value = None
mock_db.query.side_effect = [q1, q2, q3]