2026-02-25 16:51:12 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from datetime import datetime, timezone
|
|
|
|
|
from decimal import Decimal
|
|
|
|
|
from uuid import UUID
|
|
|
|
|
|
|
|
|
|
from models.agent_chat_session import AgentChatSession, AgentChatSessionStatus
|
2026-03-02 11:13:20 +08:00
|
|
|
from v1.agent.service import select_recent_session
|
2026-02-25 16:51:12 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_select_recent_session_uses_last_activity_desc() -> None:
|
|
|
|
|
sessions = [
|
|
|
|
|
AgentChatSession(
|
|
|
|
|
id=UUID("00000000-0000-0000-0000-000000000001"),
|
|
|
|
|
user_id=UUID("00000000-0000-0000-0000-0000000000a1"),
|
|
|
|
|
title="older",
|
|
|
|
|
status=AgentChatSessionStatus.COMPLETED,
|
|
|
|
|
last_activity_at=datetime(2026, 2, 25, 9, 0, tzinfo=timezone.utc),
|
|
|
|
|
message_count=1,
|
|
|
|
|
total_tokens=1,
|
|
|
|
|
total_cost=Decimal("0"),
|
|
|
|
|
),
|
|
|
|
|
AgentChatSession(
|
|
|
|
|
id=UUID("00000000-0000-0000-0000-000000000002"),
|
|
|
|
|
user_id=UUID("00000000-0000-0000-0000-0000000000a1"),
|
|
|
|
|
title="newer",
|
|
|
|
|
status=AgentChatSessionStatus.RUNNING,
|
|
|
|
|
last_activity_at=datetime(2026, 2, 25, 10, 0, tzinfo=timezone.utc),
|
|
|
|
|
message_count=2,
|
|
|
|
|
total_tokens=2,
|
|
|
|
|
total_cost=Decimal("0"),
|
|
|
|
|
),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
selected = select_recent_session(sessions)
|
|
|
|
|
|
|
|
|
|
assert selected is not None
|
|
|
|
|
assert selected.id == UUID("00000000-0000-0000-0000-000000000002")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_select_recent_session_returns_none_for_empty_collection() -> None:
|
|
|
|
|
assert select_recent_session([]) is None
|