diff --git a/tests/test_report.py b/tests/test_report.py new file mode 100644 index 0000000..8df1874 --- /dev/null +++ b/tests/test_report.py @@ -0,0 +1,78 @@ +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