import pytest from unittest.mock import AsyncMock, patch, MagicMock import asyncio from conftest import MockApplicationContext @pytest.mark.asyncio async def test_get_voice_manager(): from cogs.voice import get_voice_manager, VoiceManager mock_bot = MagicMock() mock_bot.user = MagicMock() mock_bot.user.id = 12345 manager1 = get_voice_manager(mock_bot) manager2 = get_voice_manager(mock_bot) assert isinstance(manager1, VoiceManager) assert manager1 is manager2 @pytest.mark.asyncio async def test_voice_manager_join_channel_not_found(): from cogs.voice import VoiceManager mock_bot = MagicMock() mock_bot.get_channel.return_value = None manager = VoiceManager(mock_bot) result = await manager.join_by_channel_id(999) assert result is None @pytest.mark.asyncio async def test_voice_manager_join_invalid_channel(): from cogs.voice import VoiceManager mock_bot = MagicMock() mock_channel = MagicMock() mock_bot.get_channel.return_value = mock_channel manager = VoiceManager(mock_bot) result = await manager.join_by_channel_id(999) assert result is None @pytest.mark.asyncio async def test_voice_manager_get_voice_status_not_connected(): from cogs.voice import VoiceManager mock_bot = MagicMock() mock_guild = MagicMock() with patch('cogs.voice.VoiceManager.get_voice_client', return_value=None): manager = VoiceManager(mock_bot) voice_client, is_connected, is_playing = await manager.get_voice_status(mock_guild) assert voice_client is None assert is_connected == False assert is_playing == False @pytest.mark.asyncio async def test_voice_manager_stop(): from cogs.voice import VoiceManager mock_bot = MagicMock() mock_guild = MagicMock() mock_voice_client = MagicMock() mock_voice_client.disconnect = AsyncMock() with patch('cogs.voice.VoiceManager.get_voice_client', return_value=mock_voice_client): manager = VoiceManager(mock_bot) await manager.stop(mock_guild) mock_voice_client.stop.assert_called_once() mock_voice_client.disconnect.assert_called_once()