SwarmAudit / tests /test_synthesizer_agent.py
Pranoy Mukherjee
Add prioritized report summaries
1c77a4c
import pytest
from app.agents.synthesizer_agent import SynthesizerAgent
from app.schemas import AgentOutput, Finding, RepoScanResult, Severity
def make_finding(index: int, agent: str = "Docs Agent", severity: Severity = Severity.low) -> Finding:
return Finding(
title=f"Finding {index}",
severity=severity,
file_path=f"file_{index}.py",
line_start=1,
line_end=1,
description="Description",
why_it_matters="Why",
suggested_fix="Fix",
agent_source=agent,
)
@pytest.mark.anyio
async def test_synthesizer_preserves_totals_when_display_is_truncated():
output = AgentOutput(
agent_name="Docs Agent",
findings=[make_finding(index) for index in range(20)],
)
repo = RepoScanResult(repo_url="https://github.com/example/project", local_path=".", files=[], skipped_files=0)
report = await SynthesizerAgent().synthesize(repo, [output])
assert report.total_findings_count == 20
assert report.displayed_findings_count == 8
assert report.hidden_findings_count == 12
assert report.agent_finding_counts["Docs Agent"] == 20
assert any("displaying 8 of 20" in warning for warning in report.warnings)
@pytest.mark.anyio
async def test_synthesizer_keeps_high_severity_before_low_findings():
outputs = [
AgentOutput(agent_name="Docs Agent", findings=[make_finding(1, severity=Severity.low)]),
AgentOutput(agent_name="Security Agent", findings=[make_finding(2, "Security Agent", Severity.high)]),
]
repo = RepoScanResult(repo_url="https://github.com/example/project", local_path=".", files=[], skipped_files=0)
report = await SynthesizerAgent().synthesize(repo, outputs)
assert report.findings[0].severity == Severity.high