from __future__ import annotations from agent_gitea.rendering import ( parse_review_report, render_implementer_prompt, render_pr_body, ) from agent_gitea.workspace import safe_branch_name def test_branch_name_is_stable_and_safe(db): repo = db.upsert_repository(owner="acme", name="service", clone_url="x", default_branch="main", enabled=True) issue = db.upsert_issue( repo_id=repo.id, issue_number=42, title="Fix API: handle NULL / spaces!", body="", labels=["agent:ready"], state="open", html_url="url", ) assert safe_branch_name(issue) == "agent/issue-42-fix-api-handle-null-spaces" def test_prompt_and_pr_body_include_contract_sections(db): repo = db.upsert_repository(owner="acme", name="service", clone_url="x", default_branch="main", enabled=True) issue = db.upsert_issue( repo_id=repo.id, issue_number=7, title="Add thing", body="Please add thing", labels=["agent:ready"], state="open", html_url="url", ) prompt = render_implementer_prompt(repo, issue, "agent/issue-7-add-thing") body = render_pr_body(issue, "## Summary\nDone") assert ".agent-output/AGENT_IMPLEMENTATION_REPORT.md" in prompt assert "关联 Issue:#7" in body assert "Closes #7" in body assert "人工审核" in body def test_review_report_parsing_extracts_verdict_and_comment(): report = """## Verdict REQUEST_CHANGES ## Summary Needs work ## Suggested PR Comment Please add tests. """ parsed = parse_review_report(report) assert parsed.verdict == "REQUEST_CHANGES" assert parsed.suggested_pr_comment == "Please add tests." def test_review_report_parsing_accepts_prompt_bullet_contract(): report = """- Verdict: APPROVE - Summary: Done - Suggested PR Comment: Looks good. """ parsed = parse_review_report(report) assert parsed.verdict == "APPROVE" assert parsed.suggested_pr_comment == "Looks good."