test_walk_engine_loop.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from content_agent.business_modules.walk_engine import run_bounded_walk
  2. from tests.p6_walk_helpers import FakeWalkPlatformClient, build_initial_walk_context
  3. def _pool_decisions(context):
  4. # M3: mock judgment scores 60 (review/pending); the query_next_page edge needs a
  5. # pooled success query, so promote the seed decision to pool to exercise the loop.
  6. for decision in context["rule_decisions"]:
  7. decision["decision_action"] = "ADD_TO_CONTENT_POOL"
  8. decision["search_query_effect_status"] = "success"
  9. def test_walk_engine_runs_bounded_edges_in_same_run_and_policy(tmp_path):
  10. context = build_initial_walk_context(tmp_path)
  11. _pool_decisions(context)
  12. client = FakeWalkPlatformClient()
  13. result = run_bounded_walk(platform_client=client, **context)
  14. assert {row["run_id"] for row in result["rule_decisions"]} == {"run_001"}
  15. assert {row["policy_run_id"] for row in result["rule_decisions"]} == {"policy_run_001"}
  16. assert len(result["discovered_content_items"]) > len(context["discovered_content_items"])
  17. decision_ids = [row["decision_id"] for row in result["rule_decisions"]]
  18. assert len(decision_ids) == len(set(decision_ids))
  19. assert any(row["edge_id"] == "query_next_page" for row in result["walk_actions"])
  20. def test_walk_engine_edge_failure_records_failed_action_not_failed_run(tmp_path):
  21. context = build_initial_walk_context(tmp_path)
  22. _pool_decisions(context)
  23. client = FakeWalkPlatformClient(fail_next_page=True)
  24. result = run_bounded_walk(platform_client=client, **context)
  25. failed_actions = [
  26. row for row in result["walk_actions"]
  27. if row["edge_id"] == "query_next_page" and row["walk_status"] == "failed"
  28. ]
  29. assert failed_actions
  30. assert result["rule_decisions"]