# tests/platform/test_mock.py from platform.mock import MockPlatformClient from platform.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