import pytest from datetime import datetime from app.services.parser.whatsapp import WhatsAppParser def test_parse_android(): parser = WhatsAppParser() text = "27/12/2023, 10:45 - Alice: Hey Bob!\n27/12/2023, 10:46 - Bob: Hi Alice" result = parser.parse_text(text) assert len(result.messages) == 2 assert result.messages[0].sender == "Alice" assert result.messages[1].sender == "Bob" assert result.messages[0].timestamp == datetime(2023, 12, 27, 10, 45) def test_parse_ios(): parser = WhatsAppParser() text = "[27/12/23, 10:45:30] Alice: Hey iOS\n[27/12/23, 10:46:00] Bob: Hi there" result = parser.parse_text(text) assert len(result.messages) == 2 assert result.messages[0].sender == "Alice" assert result.messages[0].timestamp == datetime(2023, 12, 27, 10, 45, 30) def test_multi_line(): parser = WhatsAppParser() text = "27/12/2023, 10:45 - Alice: Line 1\nLine 2\nLine 3" result = parser.parse_text(text) assert len(result.messages) == 1 assert "Line 2" in result.messages[0].content assert "Line 3" in result.messages[0].content def test_system_and_media(): parser = WhatsAppParser() text = "27/12/2023, 10:45 - Alice: \n27/12/2023, 10:46 - Messages are encrypted" result = parser.parse_text(text) assert result.messages[0].is_media is True assert result.messages[1].is_system is True assert result.messages[1].sender is None if __name__ == "__main__": pytest.main([__file__])