feat(scenarios): implement execution engine contracts
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user