test_grade_demand_pool.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """Current demand-grade scheduler wrapper tests."""
  2. from __future__ import annotations
  3. from unittest.mock import patch
  4. from supply_infra.scheduler.jobs.grade_demand_pool import (
  5. execute_plan_tasks_until_complete,
  6. grade_demand_pool,
  7. )
  8. @patch("supply_infra.scheduler.jobs.grade_demand_pool._execute_plan_tasks")
  9. def test_plan_execution_stops_when_no_groups_are_claimable(mock_execute) -> None:
  10. snapshot = {
  11. "execution_complete": True,
  12. "assigned_category_ids": [],
  13. "planned_groups": 0,
  14. "group_status": {},
  15. }
  16. mock_execute.return_value = {
  17. "attempted_groups": 0,
  18. "groups_run": 0,
  19. "workers": 0,
  20. "final_snapshot": snapshot,
  21. "execution_complete": True,
  22. }
  23. result = execute_plan_tasks_until_complete(
  24. "20260721",
  25. workers=5,
  26. max_demands_per_batch=20,
  27. )
  28. assert result["rounds"] == 1
  29. assert result["execution_complete"] is True
  30. mock_execute.assert_called_once()
  31. @patch("supply_infra.scheduler.jobs.grade_demand_pool._grade_demand_pool_impl")
  32. @patch("supply_infra.scheduler.jobs.grade_demand_pool._resolve_biz_dt", return_value="20260721")
  33. def test_grade_job_never_raises_to_pipeline(_mock_resolve, mock_impl) -> None:
  34. mock_impl.side_effect = RuntimeError("boom")
  35. result = grade_demand_pool("20260721")
  36. assert result["success"] is False
  37. assert result["biz_dt"] == "20260721"
  38. assert result["error"] == "boom"