fix: Fix pipeline, add ci and adapted compose
Some checks failed
CI / Run tests (pull_request) Failing after 20s
Some checks failed
CI / Run tests (pull_request) Failing after 20s
This commit is contained in:
78
tests/test_intern_voice.py
Normal file
78
tests/test_intern_voice.py
Normal file
@@ -0,0 +1,78 @@
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
from cogs.intern import InternCog
|
||||
|
||||
|
||||
class InternVoiceBehaviorTests(unittest.TestCase):
|
||||
def make_cog(self, voice_client=None):
|
||||
cog = InternCog.__new__(InternCog)
|
||||
cog.bot = SimpleNamespace(voice_clients=[voice_client] if voice_client else [])
|
||||
cog.data = [{"guild_id": 123, "mentor_id": 456}]
|
||||
cog.connected_guild_ids = set()
|
||||
cog.in_voice_channel = False
|
||||
return cog
|
||||
|
||||
def make_channel(self, channel_id, guild, connect_mock=None, name="test-channel"):
|
||||
return SimpleNamespace(id=channel_id, guild=guild, connect=connect_mock or AsyncMock(), name=name)
|
||||
|
||||
def make_member(self, member_id):
|
||||
return SimpleNamespace(id=member_id)
|
||||
|
||||
async def _run_handler(self, cog, before_channel, after_channel, voice_client):
|
||||
before = SimpleNamespace(channel=before_channel)
|
||||
after = SimpleNamespace(channel=after_channel)
|
||||
member = self.make_member(456)
|
||||
await cog.on_voice_state_update(member, before, after)
|
||||
|
||||
def test_initial_join_only_connects_with_25_percent_chance(self):
|
||||
cog = self.make_cog()
|
||||
connect_mock = AsyncMock()
|
||||
guild = SimpleNamespace(id=123, voice_client=None)
|
||||
channel = self.make_channel(1, guild, connect_mock=connect_mock)
|
||||
before = None
|
||||
after = SimpleNamespace(channel=channel)
|
||||
member = self.make_member(456)
|
||||
|
||||
with patch("cogs.intern.random.random", return_value=0.1):
|
||||
import asyncio
|
||||
asyncio.run(cog.on_voice_state_update(member, before, after))
|
||||
connect_mock.assert_awaited_once()
|
||||
|
||||
cog = self.make_cog()
|
||||
connect_mock = AsyncMock()
|
||||
guild = SimpleNamespace(id=123, voice_client=None)
|
||||
channel = self.make_channel(1, guild, connect_mock=connect_mock)
|
||||
before = None
|
||||
after = SimpleNamespace(channel=channel)
|
||||
member = self.make_member(456)
|
||||
|
||||
with patch("cogs.intern.random.random", return_value=0.9):
|
||||
import asyncio
|
||||
asyncio.run(cog.on_voice_state_update(member, before, after))
|
||||
connect_mock.assert_not_awaited()
|
||||
|
||||
def test_move_always_moves_the_bot_when_connected(self):
|
||||
guild = SimpleNamespace(id=123, voice_client=None)
|
||||
voice_client = SimpleNamespace(move_to=AsyncMock(), disconnect=AsyncMock(), guild=guild)
|
||||
cog = self.make_cog(voice_client=voice_client)
|
||||
before_channel = self.make_channel(1, guild)
|
||||
after_channel = self.make_channel(2, guild)
|
||||
import asyncio
|
||||
asyncio.run(self._run_handler(cog, before_channel, after_channel, voice_client))
|
||||
voice_client.move_to.assert_awaited_once_with(after_channel)
|
||||
|
||||
def test_disconnect_always_disconnects_when_mentor_leaves(self):
|
||||
guild = SimpleNamespace(id=123, voice_client=None)
|
||||
voice_client = SimpleNamespace(move_to=AsyncMock(), disconnect=AsyncMock(), guild=guild)
|
||||
cog = self.make_cog(voice_client=voice_client)
|
||||
before_channel = self.make_channel(1, guild)
|
||||
after_channel = None
|
||||
import asyncio
|
||||
asyncio.run(self._run_handler(cog, before_channel, after_channel, voice_client))
|
||||
voice_client.disconnect.assert_awaited_once_with(force=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user