61 lines
1.6 KiB
Python
61 lines
1.6 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_IMPLEMENTATION_REPORT.md" in prompt
|
|
assert "Closes #7" in body
|
|
assert "Human Review Gate" 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."
|