74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
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."
|