from __future__ import annotations import pytest from yuxi.channel.domain.model.session.channel_session import ChannelSession class TestChannelSession: def test_basic_creation(self): session = ChannelSession( id=1, thread_id="thread123", user_id="user1", agent_id="1", channel_type="web", channel_session_key="key1", status="active", title="Test Session", ) assert session.id == 1 assert session.thread_id == "thread123" assert session.user_id == "user1" assert session.agent_id == "1" assert session.channel_type == "web" assert session.channel_session_key == "key1" assert session.status == "active" assert session.title == "Test Session" def test_creation_with_none_title(self): session = ChannelSession( id=1, thread_id="thread123", user_id="user1", agent_id="1", channel_type="web", channel_session_key="key1", status="active", title=None, ) assert session.title is None def test_to_dict(self): session = ChannelSession( id=1, thread_id="thread123", user_id="user1", agent_id="1", channel_type="web", channel_session_key="key1", status="active", title="Test Session", ) d = session.to_dict() assert d["id"] == 1 assert d["thread_id"] == "thread123" assert d["user_id"] == "user1" assert d["agent_id"] == "1" assert d["channel_type"] == "web" assert d["channel_session_key"] == "key1" assert d["status"] == "active" assert d["title"] == "Test Session" def test_from_dict(self): d = { "id": 1, "thread_id": "thread123", "user_id": "user1", "agent_id": "1", "channel_type": "web", "channel_session_key": "key1", "status": "active", "title": "Test Session", } session = ChannelSession.from_dict(d) assert session.id == 1 assert session.thread_id == "thread123" assert session.title == "Test Session" def test_default_values(self): session = ChannelSession( id=1, thread_id="thread123", user_id="user1", agent_id="1", channel_type="web", channel_session_key="key1", status="active", ) assert session.title is None