103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
"""Tests for Markdown export functionality."""
|
|
from datetime import datetime, timezone
|
|
|
|
import pytest
|
|
|
|
from openclaw.models import Session, Message
|
|
from openclaw.export import generate_markdown_report
|
|
|
|
|
|
@pytest.fixture
|
|
def db_session(db):
|
|
s = Session.objects.create(
|
|
session_id="report-test",
|
|
agent_name="xingyao",
|
|
source_node="macmini",
|
|
model_provider="anthropic",
|
|
model_id="claude-sonnet-4-6",
|
|
total_tokens=45230,
|
|
start_time=datetime(2026, 4, 5, 10, 0, tzinfo=timezone.utc),
|
|
)
|
|
Message.objects.create(
|
|
session=s,
|
|
message_id="m1",
|
|
parent_id="root",
|
|
role="user",
|
|
content_text="Help me fix this bug",
|
|
timestamp=datetime(2026, 4, 5, 10, 23, tzinfo=timezone.utc),
|
|
)
|
|
Message.objects.create(
|
|
session=s,
|
|
message_id="m2",
|
|
parent_id="m1",
|
|
role="assistant",
|
|
content_text="The bug is on line 45...",
|
|
timestamp=datetime(2026, 4, 5, 10, 23, 30, tzinfo=timezone.utc),
|
|
)
|
|
return s
|
|
|
|
|
|
@pytest.mark.django_db
|
|
class TestMarkdownExport:
|
|
def test_basic_report(self, db_session):
|
|
md = generate_markdown_report(
|
|
messages=db_session.messages.order_by("created_at"),
|
|
date_str="2026-04-05",
|
|
)
|
|
assert "# Daily Report: 2026-04-05" in md
|
|
assert "Help me fix this bug" in md
|
|
assert "The bug is on line 45..." in md
|
|
|
|
def test_thinking_content_stripped(self, db):
|
|
s = Session.objects.create(
|
|
session_id="thinking-test",
|
|
agent_name="test",
|
|
source_node="macmini",
|
|
start_time=datetime(2026, 4, 5, 10, 0, tzinfo=timezone.utc),
|
|
)
|
|
Message.objects.create(
|
|
session=s,
|
|
message_id="m3",
|
|
parent_id="root",
|
|
role="assistant",
|
|
content_text="Final answer",
|
|
raw_content=[
|
|
{"type": "thinking", "thinking": "Let me think about this..."},
|
|
{"type": "text", "text": "Final answer"},
|
|
],
|
|
timestamp=datetime(2026, 4, 5, 10, 30, tzinfo=timezone.utc),
|
|
)
|
|
md = generate_markdown_report(
|
|
messages=s.messages.order_by("created_at"),
|
|
date_str="2026-04-05",
|
|
)
|
|
assert "Let me think about this..." not in md
|
|
assert "Final answer" in md
|
|
|
|
def test_tool_call_formatting(self, db):
|
|
s = Session.objects.create(
|
|
session_id="tool-test",
|
|
agent_name="test",
|
|
source_node="macmini",
|
|
model_id="test-model",
|
|
total_tokens=100,
|
|
start_time=datetime(2026, 4, 5, 10, 0, tzinfo=timezone.utc),
|
|
)
|
|
Message.objects.create(
|
|
session=s,
|
|
message_id="m4",
|
|
parent_id="root",
|
|
role="assistant",
|
|
content_text="I'll run a command",
|
|
raw_content=[
|
|
{"type": "text", "text": "I'll run a command"},
|
|
],
|
|
timestamp=datetime(2026, 4, 5, 10, 30, tzinfo=timezone.utc),
|
|
)
|
|
md = generate_markdown_report(
|
|
messages=s.messages.order_by("created_at"),
|
|
date_str="2026-04-05",
|
|
)
|
|
assert "test-model" in md
|
|
assert "100" in md
|