moodra-api / tests /test_parser.py
muaazl's picture
first commit
cf4ac41
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: <Media omitted>\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__])