From 857a7364ddb9b10529593c5e9c3578eb95c1da9b Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 18 Apr 2026 16:24:42 +0200 Subject: add a test suite Signed-off-by: salmonik --- tests/cogs/test_voice.py | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tests/cogs/test_voice.py (limited to 'tests/cogs/test_voice.py') diff --git a/tests/cogs/test_voice.py b/tests/cogs/test_voice.py new file mode 100644 index 0000000..f5784f6 --- /dev/null +++ b/tests/cogs/test_voice.py @@ -0,0 +1,79 @@ +import pytest +from unittest.mock import AsyncMock, patch, MagicMock +import asyncio +from tests.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() \ No newline at end of file -- cgit v1.2.3