import pytest from pathlib import Path import tempfile from config_auditor.report import ReportGenerator from config_auditor.rules import Issue class TestReportGenerator: def test_to_json(self): issues = [ Issue( severity="critical", category="test", message="Test issue", file=Path("test.json"), ) ] generator = ReportGenerator() result = generator.to_json(issues) assert "critical" in result assert "Test issue" in result def test_to_yaml(self): issues = [ Issue( severity="warning", category="test", message="Warning issue", file=Path("test.json"), ) ] generator = ReportGenerator() result = generator.to_yaml(issues) assert "warning" in result assert "Warning issue" in result def test_to_text(self): issues = [ Issue( severity="critical", category="test", message="Critical issue", file=Path("test.json"), suggestion="Fix this", ) ] generator = ReportGenerator() output = [] generator.to_text(issues, output.append) assert len(output) > 0 assert any("Critical" in line for line in output) def test_empty_issues_text_output(self): issues = [] generator = ReportGenerator() output = [] generator.to_text(issues, output.append) assert any("No issues found" in line for line in output) def test_generate_summary(self): issues = [ Issue(severity="critical", category="a", message="1", file=Path("f1")), Issue(severity="critical", category="b", message="2", file=Path("f2")), Issue(severity="warning", category="c", message="3", file=Path("f3")), ] generator = ReportGenerator() summary = generator.generate_summary(issues) assert summary["total"] == 3 assert summary["by_severity"]["critical"] == 2 assert summary["by_severity"]["warning"] == 1