"""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