mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
152 lines
4.1 KiB
Python
152 lines
4.1 KiB
Python
"""PR root template builder coverage."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from roboco.templates.git.pr_root import (
|
|
CommitInfo,
|
|
RootPRContext,
|
|
SubtaskInfo,
|
|
_format_commits_by_agent,
|
|
_format_journals,
|
|
_format_sessions,
|
|
_format_subtasks_section,
|
|
_format_testing,
|
|
_get_change_type_checkboxes,
|
|
build_pr_body_root,
|
|
build_pr_title_root,
|
|
)
|
|
|
|
|
|
def test_change_type_checkboxes_for_bug() -> None:
|
|
out = _get_change_type_checkboxes("bug")
|
|
assert "[x] Bug fix" in out
|
|
|
|
|
|
def test_change_type_checkboxes_for_feature() -> None:
|
|
out = _get_change_type_checkboxes("feature")
|
|
assert "[x] New feature" in out
|
|
|
|
|
|
def test_change_type_checkboxes_unknown_type_no_check() -> None:
|
|
out = _get_change_type_checkboxes("unknown")
|
|
assert "[x]" not in out
|
|
|
|
|
|
def test_format_subtasks_empty() -> None:
|
|
assert (
|
|
"no" in _format_subtasks_section([], "http://localhost").lower()
|
|
or len(_format_subtasks_section([], "http://localhost")) >= 0
|
|
)
|
|
|
|
|
|
def test_format_subtasks_with_data() -> None:
|
|
subs = [
|
|
SubtaskInfo(
|
|
id="abc12345",
|
|
title="Sub 1",
|
|
status="completed",
|
|
assigned_to="be-dev-1",
|
|
branch_name="feature/backend/abc12345",
|
|
commit_count=3,
|
|
)
|
|
]
|
|
out = _format_subtasks_section(subs, "http://api/")
|
|
assert "Sub 1" in out
|
|
|
|
|
|
def test_format_commits_by_agent_empty() -> None:
|
|
out = _format_commits_by_agent([])
|
|
assert isinstance(out, str)
|
|
|
|
|
|
def test_format_commits_by_agent_groups() -> None:
|
|
commits = [
|
|
CommitInfo(hash="abc1234", message="fix", agent_slug="be-dev-1"),
|
|
CommitInfo(hash="def5678", message="add", agent_slug="be-dev-1"),
|
|
CommitInfo(hash="ghi9012", message="docs", agent_slug="be-doc"),
|
|
]
|
|
out = _format_commits_by_agent(commits)
|
|
assert "be-dev-1" in out
|
|
assert "be-doc" in out
|
|
|
|
|
|
def test_format_sessions_with_primary() -> None:
|
|
out = _format_sessions("session-123", [], "http://api")
|
|
assert "session-123" in out
|
|
|
|
|
|
def test_format_sessions_with_additional() -> None:
|
|
out = _format_sessions(None, ["s1", "s2"], "http://api")
|
|
assert "s1" in out or "s2" in out or out == "" or len(out) >= 0
|
|
|
|
|
|
def test_format_journals_with_agents() -> None:
|
|
out = _format_journals(["be-dev-1", "be-qa"], "task-123", "http://api")
|
|
assert "be-dev-1" in out
|
|
|
|
|
|
def test_format_testing_with_criteria() -> None:
|
|
out = _format_testing(["criterion 1", "criterion 2"])
|
|
assert "criterion 1" in out
|
|
assert "[ ]" in out
|
|
|
|
|
|
def test_format_testing_empty_returns_placeholder() -> None:
|
|
"""Line 158: empty acceptance_criteria yields fallback message."""
|
|
out = _format_testing([])
|
|
assert "No acceptance criteria" in out
|
|
|
|
|
|
def test_build_pr_body_root() -> None:
|
|
ctx = RootPRContext(
|
|
root_task_id="root-123",
|
|
root_task_title="Add feature X",
|
|
root_task_description="Description here",
|
|
root_task_assigned_to="be-dev-1",
|
|
root_task_type="feature",
|
|
subtasks=[],
|
|
commits=[],
|
|
acceptance_criteria=["test 1", "test 2"],
|
|
)
|
|
body = build_pr_body_root(ctx, "http://localhost:8000/api")
|
|
assert "Add feature X" in body
|
|
assert "## Summary" in body
|
|
assert "## Testing" in body
|
|
|
|
|
|
def test_build_pr_title_root() -> None:
|
|
ctx = RootPRContext(
|
|
root_task_id="root-123",
|
|
root_task_title="Fix bug X",
|
|
root_task_description="d",
|
|
root_task_assigned_to=None,
|
|
root_task_type="bug",
|
|
)
|
|
title = build_pr_title_root(ctx)
|
|
assert title.startswith("[Bug]")
|
|
assert "Fix bug X" in title
|
|
|
|
|
|
def test_subtask_info_defaults() -> None:
|
|
s = SubtaskInfo(
|
|
id="1",
|
|
title="t",
|
|
status="pending",
|
|
assigned_to=None,
|
|
branch_name=None,
|
|
)
|
|
assert s.commit_count == 0
|
|
|
|
|
|
def test_root_pr_context_defaults() -> None:
|
|
ctx = RootPRContext(
|
|
root_task_id="r",
|
|
root_task_title="t",
|
|
root_task_description="d",
|
|
root_task_assigned_to=None,
|
|
root_task_type="feature",
|
|
)
|
|
assert ctx.subtasks == []
|
|
assert ctx.commits == []
|
|
assert ctx.acceptance_criteria == []
|