"""Tests for report utility functions.""" import pytest from community.helpers.report_utils import ( generate_activity_report, split_doctor_report, format_ban_results, format_sync_results ) class TestReportUtils: """Test cases for report utility functions.""" def test_generate_activity_report_success(self): """Test generating activity report successfully.""" database_results = { "active": [{"mxid": "@user1:example.com"}, {"mxid": "@user2:example.com"}], "inactive": [{"mxid": "@user3:example.com"}], "ignored": [{"mxid": "@user4:example.com"}] } result = generate_activity_report(database_results) assert result["active"] == ["@user1:example.com", "@user2:example.com"] assert result["inactive"] == ["@user3:example.com"] assert result["ignored"] == ["@user4:example.com"] def test_generate_activity_report_empty(self): """Test generating activity report with empty results.""" database_results = { "active": [], "inactive": [], "ignored": [] } result = generate_activity_report(database_results) assert result["active"] == ["none"] assert result["inactive"] == ["none"] assert result["ignored"] == ["none"] def test_generate_activity_report_missing_keys(self): """Test generating activity report with missing keys.""" database_results = {} result = generate_activity_report(database_results) assert result["active"] == ["none"] assert result["inactive"] == ["none"] assert result["ignored"] == ["none"] def test_split_doctor_report_small(self): """Test splitting small report that doesn't need splitting.""" report_text = "This is a small report that fits in one chunk." result = split_doctor_report(report_text, 1000) assert len(result) == 1 assert result[0] == report_text def test_split_doctor_report_large(self): """Test splitting large report into chunks.""" # Create a large report lines = [f"Line {i}: This is a test line for splitting" for i in range(100)] report_text = "\n".join(lines) result = split_doctor_report(report_text, 100) # Small chunk size assert len(result) > 1 assert all(len(chunk) <= 100 for chunk in result) # Verify all content is preserved (account for newlines) combined = "\n".join(result) assert combined == report_text def test_split_doctor_report_with_sections(self): """Test splitting report with section headers.""" report_text = """