"""Тесты для команды !status.""" import time import pytest from unittest.mock import AsyncMock, MagicMock, patch class TestStatusCommand: """Тесты Discord-команды status.""" async def test_status_sends_embed(self): """Команда status отправляет embed-сообщение.""" from commands.status import Status 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): """Uptime форматируется корректно.""" from commands.status import Status 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): from commands.status import Status result = Status._format_uptime(0) assert result == "0с" def test_minutes_and_seconds(self): from commands.status import Status result = Status._format_uptime(125) # 2м 5с assert "2м" in result assert "5с" in result def test_hours_minutes_seconds(self): from commands.status import Status 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): from commands.status import Status 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