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_music_join.py | 53 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 tests/cogs/test_music_join.py (limited to 'tests/cogs/test_music_join.py') diff --git a/tests/cogs/test_music_join.py b/tests/cogs/test_music_join.py new file mode 100644 index 0000000..5fc66f6 --- /dev/null +++ b/tests/cogs/test_music_join.py @@ -0,0 +1,53 @@ +import pytest +from unittest.mock import AsyncMock, patch, MagicMock +from tests.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() + mock_voice = MagicMock() + mock_voice_channel.connect = AsyncMock(return_value=mock_voice) + + ctx.author.voice = MagicMock() + ctx.author.voice.channel = mock_voice_channel + + with patch.object(mock_voice_channel, 'connect', new_callable=AsyncMock, return_value=mock_voice): + 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) + + +@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 + + mock_voice_client = MagicMock() + mock_voice_client.disconnect = AsyncMock() + ctx.voice_client = mock_voice_client + + 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_voice_client.disconnect.assert_called_once() \ No newline at end of file -- cgit v1.2.3