import pytest from unittest.mock import AsyncMock, patch, MagicMock from conftest import MockApplicationContext @pytest.fixture def join_cog(bot): from cogs.music.join import Join cog = Join(bot) return cog @pytest.fixture def stop_cog(bot): from cogs.music.stop import Stop cog = Stop(bot) return cog @pytest.mark.asyncio async def test_join_command_success(join_cog, mock_channel, mock_guild, bot, mock_user): ctx = MockApplicationContext(bot=bot, channel=mock_channel, guild=mock_guild) ctx.user = mock_user ctx.author = mock_user mock_voice_channel = MagicMock() ctx.author.voice = MagicMock() ctx.author.voice.channel = mock_voice_channel with patch('cogs.music.join.get_voice_manager') as mock_get_vm: mock_vm = MagicMock() mock_vm.connect = AsyncMock() mock_get_vm.return_value = mock_vm with patch.object(ctx, 'respond', new_callable=AsyncMock): with patch.object(ctx.interaction, 'delete_original_response', new_callable=AsyncMock): await join_cog.join.callback(join_cog, ctx) mock_vm.connect.assert_called_once_with(mock_voice_channel) @pytest.mark.asyncio async def test_stop_command_success(stop_cog, mock_channel, mock_guild, bot, mock_user): ctx = MockApplicationContext(bot=bot, channel=mock_channel, guild=mock_guild) ctx.user = mock_user ctx.author = mock_user with patch('cogs.music.stop.get_voice_manager') as mock_get_vm: mock_vm = MagicMock() mock_vm.disconnect = AsyncMock() mock_get_vm.return_value = mock_vm with patch.object(ctx, 'respond', new_callable=AsyncMock): with patch.object(ctx.interaction, 'delete_original_response', new_callable=AsyncMock): await stop_cog.stop.callback(stop_cog, ctx) mock_vm.disconnect.assert_called_once_with(mock_guild)