"""Тесты для команды !status.""" import time from unittest.mock import AsyncMock, MagicMock from commands.status import Status class TestStatusCommand: """Тесты Discord-команды status.""" async def test_status_sends_embed(self) -> None: """Команда status отправляет embed-сообщение.""" mock_ctx = MagicMock() mock_ctx.bot.latency = 0.042 mock_ctx.bot._start_time = time.time() mock_ctx.send = AsyncMock(return_value=None) cog = Status() await cog.status(cog, mock_ctx) mock_ctx.send.assert_awaited_once() call_args = mock_ctx.send.call_args embed = call_args[1]["embed"] if call_args[1] else call_args[0][0] assert embed.title == "Статус бота" assert "42.0 мс" in embed.fields[0].value async def test_status_uptime_format(self) -> None: """Uptime форматируется корректно.""" mock_ctx = MagicMock() mock_ctx.bot.latency = 0.050 mock_ctx.bot._start_time = time.time() - 90061 # 1д 1ч 1м 1с mock_ctx.send = AsyncMock(return_value=None) cog = Status() await cog.status(cog, mock_ctx) call_args = mock_ctx.send.call_args embed = call_args[1]["embed"] if call_args[1] else call_args[0][0] uptime = embed.fields[1].value assert "1д" in uptime assert "1ч" in uptime assert "1м" in uptime assert "1с" in uptime class TestFormatUptime: """Тесты форматирования uptime.""" def test_zero_seconds(self) -> None: result = Status._format_uptime(0) assert result == "0с" def test_minutes_and_seconds(self) -> None: result = Status._format_uptime(125) # 2м 5с assert "2м" in result assert "5с" in result def test_hours_minutes_seconds(self) -> None: result = Status._format_uptime(3661) # 1ч 1м 1с assert "1ч" in result assert "1м" in result assert "1с" in result def test_full_day(self) -> None: result = Status._format_uptime(90061) # 1д 1ч 1м 1с assert "1д" in result assert "1ч" in result assert "1м" in result assert "1с" in result