test/memory+runtime: cover store and client factory

Enable pytest-asyncio auto mode; assert default user, message
round-trip, and provider→client mapping including errors.
This commit is contained in:
2026-07-14 17:25:22 +08:00
parent c129498efa
commit 227373914f
3 changed files with 126 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
from __future__ import annotations
from typing import TYPE_CHECKING
import pytest
from plyngent.config.models import DatabaseConfig
from plyngent.lmproto.openai_compatible.model import AssistantChatMessage, UserChatMessage
from plyngent.memory import DEFAULT_USER_NAME, MemoryStore
if TYPE_CHECKING:
from collections.abc import AsyncIterator
@pytest.fixture
async def store() -> AsyncIterator[MemoryStore]:
memory = await MemoryStore.open(DatabaseConfig())
yield memory
await memory.close()
async def test_open_creates_default_user(store: MemoryStore) -> None:
user = await store.get_user_by_name(DEFAULT_USER_NAME)
assert user is not None
assert user.name == DEFAULT_USER_NAME
async def test_create_session_uses_default_user(store: MemoryStore) -> None:
session = await store.create_session(name="chat-1")
assert session.sid is not None
assert session.name == "chat-1"
user = await store.get_user_by_name(DEFAULT_USER_NAME)
assert user is not None
assert session.uid == user.uid
async def test_append_and_list_messages(store: MemoryStore) -> None:
session = await store.create_session()
user_msg = UserChatMessage(content="hello")
assistant_msg = AssistantChatMessage(content="hi")
row0 = await store.append_message(session.sid, user_msg)
row1 = await store.append_message(session.sid, assistant_msg)
assert row0.seq == 0
assert row1.seq == 1
messages = await store.list_messages(session.sid)
assert len(messages) == 2 # noqa: PLR2004
assert isinstance(messages[0], UserChatMessage)
assert messages[0].content == "hello"
assert isinstance(messages[1], AssistantChatMessage)
assert messages[1].content == "hi"
async def test_list_sessions(store: MemoryStore) -> None:
s1 = await store.create_session(name="a")
s2 = await store.create_session(name="b")
sessions = await store.list_sessions()
ids = {s.sid for s in sessions}
assert s1.sid in ids
assert s2.sid in ids