tests/gateway/conftest.py already installs a comprehensive telegram mock at collection time (line 330), before any test module's imports run. The per-file copies were fully redundant — each was a simpler subset (plain strings, setdefault, fewer error classes) of the conftest version (which uses _fake_str_enum for PTB-faithful StrEnum semantics, sys.modules overwrite to win over partial/broken imports, and a full error hierarchy including BadRequest, Forbidden, RetryAfter, Conflict, InvalidToken). Removed: function def + module-level call + now-unused imports (sys, MagicMock where no longer referenced) + dangling comment blocks that referenced the deleted mock, in 27 test files. Left untouched: tests/gateway/conftest.py (canonical source) and tests/e2e/conftest.py (separate conftest tree that may run in isolation). Found by /simplify-code review of PR #90560.
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
"""Tests for the Telegram bot status indicator.
|
|
|
|
Telegram bots have no real online/offline presence dot (that's a user-account
|
|
feature). The closest Bot API surface is the bot's *short description* — the
|
|
line shown under the bot's name in its profile. When `extra.status_indicator`
|
|
is enabled, the adapter sets it to "Online" on connect and "Offline" on clean
|
|
disconnect so users can tell whether the gateway is up.
|
|
"""
|
|
|
|
from unittest.mock import AsyncMock, MagicMock
|
|
|
|
import pytest
|
|
|
|
from gateway.config import PlatformConfig
|
|
from plugins.platforms.telegram.adapter import TelegramAdapter # noqa: E402
|
|
|
|
|
|
def _make_adapter(extra):
|
|
adapter = TelegramAdapter(PlatformConfig(enabled=True, token="***", extra=extra))
|
|
adapter._bot = MagicMock()
|
|
adapter._bot.set_my_short_description = AsyncMock()
|
|
return adapter
|
|
|
|
|
|
def test_enabled_via_extra():
|
|
adapter = _make_adapter(extra={"status_indicator": True})
|
|
assert adapter._status_indicator_enabled is True
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_disabled_is_noop():
|
|
adapter = _make_adapter(extra={"status_indicator": False})
|
|
await adapter._set_status_indicator(online=True)
|
|
adapter._bot.set_my_short_description.assert_not_called()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_online_sets_default_text():
|
|
adapter = _make_adapter(extra={"status_indicator": True})
|
|
await adapter._set_status_indicator(online=True)
|
|
adapter._bot.set_my_short_description.assert_awaited_once_with(
|
|
short_description="Online"
|
|
)
|
|
|
|
|