from __future__ import annotations from orchestration.batch_runtime import enqueue_refresh_and_answer_job, run_refresh_and_answer_job def test_batch_runtime_handoff_executes_feature_and_risk() -> None: job = enqueue_refresh_and_answer_job( question_id="Q28", slice_window="2020-06", requested_outputs=["feature_store", "risk_store"], reason=["needs_ranking", "aggregate_not_sufficient"], ) result = run_refresh_and_answer_job( job, feature_executor=lambda: {"run_id": "feature-run-1"}, risk_executor=lambda: {"run_id": "risk-run-1"}, should_refresh=False, ) payload = result.to_dict() assert payload["status"] == "success" assert payload["execution_mode"] == "batch_runtime_executed" assert payload["run_ids"]["feature_run_id"] == "feature-run-1" assert payload["run_ids"]["risk_run_id"] == "risk-run-1" def test_batch_runtime_handoff_can_execute_refresh() -> None: job = enqueue_refresh_and_answer_job( question_id="Q30", slice_window="2020-06", requested_outputs=["feature_store", "risk_store"], reason=["needs_full_period_aggregation", "refresh_stale"], ) result = run_refresh_and_answer_job( job, refresh_executor=lambda: {"run_id": "refresh-run-1"}, feature_executor=lambda: {"run_id": "feature-run-2"}, risk_executor=lambda: {"run_id": "risk-run-2"}, should_refresh=True, ) payload = result.to_dict() assert payload["status"] == "success" assert payload["run_ids"]["refresh_run_id"] == "refresh-run-1" assert payload["run_ids"]["feature_run_id"] == "feature-run-2" assert payload["run_ids"]["risk_run_id"] == "risk-run-2"