| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- from fastapi.testclient import TestClient
- from content_agent import api
- from content_agent.run_service import RunService
- def test_strategy_review_get_missing_is_read_only(tmp_path, monkeypatch):
- service = RunService(runtime_root=tmp_path / "runtime" / "v1")
- run_id = "run_missing_review"
- policy_run_id = "policy_missing_review"
- service.runtime.prepare_run(run_id)
- service.runtime.write_json(
- run_id,
- "final_output.json",
- _final_output(run_id, policy_run_id),
- )
- monkeypatch.setattr(api, "service", service)
- client = TestClient(api.app)
- response = client.get(f"/runs/{run_id}/strategy-review")
- assert response.status_code == 200
- data = response.json()["data"]
- assert data["review_status"] == "not_generated"
- assert data["policy_run_id"] == policy_run_id
- assert not (service.runtime.run_dir(run_id) / "strategy_review.json").exists()
- def test_strategy_review_regenerate_generates_versioned_review(tmp_path, monkeypatch):
- service = RunService(runtime_root=tmp_path / "runtime" / "v1")
- run_id = "run_regenerate_review"
- policy_run_id = "policy_regenerate_review"
- service.runtime.prepare_run(run_id)
- service.runtime.write_json(
- run_id,
- "final_output.json",
- _final_output(run_id, policy_run_id),
- )
- monkeypatch.setattr(api, "service", service)
- client = TestClient(api.app)
- response = client.post(f"/runs/{run_id}/strategy-review/regenerate")
- assert response.status_code == 200
- data = response.json()["data"]
- assert data["review_status"] == "generated"
- assert data["review_id"].startswith(f"review_{policy_run_id}_")
- assert data["review_id"] != f"review_{policy_run_id}"
- written = service.runtime.read_json(run_id, "strategy_review.json")
- assert written["review_id"] == data["review_id"]
- def _final_output(run_id: str, policy_run_id: str) -> dict:
- return {
- "schema_version": "runtime_record.v1",
- "run_id": run_id,
- "policy_run_id": policy_run_id,
- "policy": {"strategy_version": "V1"},
- "walk_strategy": {"walk_strategy_version": "V1.0"},
- "content_assets": [],
- "author_assets": [],
- "summary": {
- "search_query_count": 0,
- "discovered_content_count": 0,
- "pooled_content_count": 0,
- "review_content_count": 0,
- "rejected_content_count": 0,
- },
- }
|