aboutsummaryrefslogtreecommitdiffstats
path: root/tests/cogs/test_music_join.py
blob: b40d93ae203e71c3a68759dcb3b90e180a686afc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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)