vk_hackathon/tests/test_rendering.py

108 lines
3.4 KiB
Python

"""Unit tests for index/rendering.py"""
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
from index.cleaning import CleanedMessage
from index.rendering import render_page_content, render_dense_content, render_sparse_content
def _make_cleaned(**kwargs) -> CleanedMessage:
defaults = dict(
id="msg1",
sender_id="alice@example.com",
time=1700000000,
thread_sn=None,
text="",
parts=[],
mentions=[],
member_event_text="",
file_info=[],
is_system=False,
is_forward=False,
is_quote=False,
)
defaults.update(kwargs)
return CleanedMessage(**defaults)
class TestRenderPageContent:
def test_text_message(self):
msg = _make_cleaned(text="Hello world")
result = render_page_content(msg)
assert "alice@example.com" in result
assert "Hello world" in result
def test_quote_part(self):
msg = _make_cleaned(
parts=[{"type": "quote", "text": "[quote from bob]: original"}]
)
result = render_page_content(msg)
assert "[quote from bob]" in result
def test_forward_part(self):
msg = _make_cleaned(
parts=[{"type": "forward", "text": "[forwarded from channel]: content"}],
is_forward=True,
)
result = render_page_content(msg)
assert "forwarded" in result
def test_member_event(self):
msg = _make_cleaned(
member_event_text="[system: alice@x.com added to chat]",
is_system=True,
)
result = render_page_content(msg)
assert "added to chat" in result
def test_file_attachment(self):
msg = _make_cleaned(
file_info=[{"name": "report.pdf", "mime": "application/pdf", "url": "", "date": ""}]
)
result = render_page_content(msg)
assert "report.pdf" in result
class TestRenderDenseContent:
def test_includes_timestamp(self):
msg = _make_cleaned(text="test", time=1700000000)
result = render_dense_content(msg)
assert "2023-" in result # UTC date
def test_includes_sender(self):
msg = _make_cleaned(text="hi", sender_id="bob@corp.com")
result = render_dense_content(msg)
assert "sender:bob@corp.com" in result
def test_forward_marker(self):
msg = _make_cleaned(is_forward=True, parts=[{"type": "forward", "text": "[forwarded]: x"}])
result = render_dense_content(msg)
assert "type:forward" in result
def test_mentions_included(self):
msg = _make_cleaned(
text="hey",
mentions=["charlie@corp.com"],
)
result = render_dense_content(msg)
assert "charlie@corp.com" in result
class TestRenderSparseContent:
def test_includes_sender(self):
msg = _make_cleaned(text="hello")
result = render_sparse_content(msg)
assert "alice@example.com" in result
def test_includes_mentions(self):
msg = _make_cleaned(text="ping", mentions=["dave@corp.com"])
result = render_sparse_content(msg)
assert "dave@corp.com" in result
def test_includes_filename(self):
msg = _make_cleaned(
file_info=[{"name": "budget.xlsx", "mime": "", "url": "", "date": ""}]
)
result = render_sparse_content(msg)
assert "budget.xlsx" in result