surfaces/tests/platform/test_mock.py

45 lines
1.6 KiB
Python

# tests/platform/test_mock.py
from sdk.mock import MockPlatformClient
from sdk.interface import User, MessageResponse, UserSettings
from core.protocol import SettingsAction
async def test_get_or_create_user_returns_user():
client = MockPlatformClient()
user = await client.get_or_create_user("12345", "telegram", "Иван")
assert isinstance(user, User)
assert user.external_id == "12345"
assert user.platform == "telegram"
assert user.is_new is True
async def test_get_or_create_user_idempotent():
client = MockPlatformClient()
u1 = await client.get_or_create_user("42", "matrix")
u2 = await client.get_or_create_user("42", "matrix")
assert u1.user_id == u2.user_id
assert u2.is_new is False
async def test_send_message_returns_response():
client = MockPlatformClient()
user = await client.get_or_create_user("u1", "telegram")
result = await client.send_message(user.user_id, "C1", "Привет!")
assert isinstance(result, MessageResponse)
assert result.finished is True
assert len(result.response) > 0
async def test_get_settings_returns_defaults():
client = MockPlatformClient()
settings = await client.get_settings("usr-telegram-42")
assert isinstance(settings, UserSettings)
assert "web-search" in settings.skills
async def test_update_settings_toggle_skill():
client = MockPlatformClient()
action = SettingsAction(action="toggle_skill", payload={"skill": "browser", "enabled": True})
await client.update_settings("usr-1", action)
settings = await client.get_settings("usr-1")
assert settings.skills.get("browser") is True