diff options
| author | 2021-11-09 01:38:52 +0100 | |
|---|---|---|
| committer | 2021-11-09 01:38:52 +0100 | |
| commit | 74523cd6505699c79316ce15f725331b6f0a5e71 (patch) | |
| tree | a8079a9a560469964c3d7e79fbd0978f0f5b2cb5 /tests | |
| parent | Remove try_get_tag ctx args test (diff) | |
| parent | Merge pull request #1872 from python-discord/experiments/isort (diff) | |
Merge remote-tracking branch 'upstream/main' into tag-groups
# Conflicts:
#	bot/converters.py
#	bot/exts/info/tags.py
#	tests/bot/test_converters.py
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/__init__.py | 3 | ||||
| -rw-r--r-- | tests/base.py | 3 | ||||
| -rw-r--r-- | tests/bot/exts/backend/sync/test_base.py | 1 | ||||
| -rw-r--r-- | tests/bot/exts/backend/sync/test_cog.py | 7 | ||||
| -rw-r--r-- | tests/bot/exts/backend/sync/test_users.py | 7 | ||||
| -rw-r--r-- | tests/bot/exts/events/test_code_jams.py | 4 | ||||
| -rw-r--r-- | tests/bot/exts/filters/test_token_remover.py | 13 | ||||
| -rw-r--r-- | tests/bot/exts/moderation/infraction/test_infractions.py | 14 | ||||
| -rw-r--r-- | tests/bot/exts/moderation/test_incidents.py | 11 | ||||
| -rw-r--r-- | tests/bot/exts/moderation/test_silence.py | 9 | ||||
| -rw-r--r-- | tests/bot/test_converters.py | 7 | ||||
| -rw-r--r-- | tests/helpers.py | 7 | ||||
| -rw-r--r-- | tests/test_base.py | 11 | 
13 files changed, 47 insertions, 50 deletions
| diff --git a/tests/__init__.py b/tests/__init__.py index 2228110ad..c2b9d12dc 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,5 +1,6 @@  import logging +from bot.log import get_logger -log = logging.getLogger() +log = get_logger()  log.setLevel(logging.CRITICAL) diff --git a/tests/base.py b/tests/base.py index d99b9ac31..ab9287e9a 100644 --- a/tests/base.py +++ b/tests/base.py @@ -6,6 +6,7 @@ from typing import Dict  import discord  from discord.ext import commands +from bot.log import get_logger  from tests import helpers @@ -42,7 +43,7 @@ class LoggingTestsMixin:          manager when we're testing under the assumption that no log records will be emitted.          """          if not isinstance(logger, logging.Logger): -            logger = logging.getLogger(logger) +            logger = get_logger(logger)          if level:              level = logging._nameToLevel.get(level, level) diff --git a/tests/bot/exts/backend/sync/test_base.py b/tests/bot/exts/backend/sync/test_base.py index 3ad9db9c3..9dc46005b 100644 --- a/tests/bot/exts/backend/sync/test_base.py +++ b/tests/bot/exts/backend/sync/test_base.py @@ -1,7 +1,6 @@  import unittest  from unittest import mock -  from bot.api import ResponseCodeError  from bot.exts.backend.sync._syncers import Syncer  from tests import helpers diff --git a/tests/bot/exts/backend/sync/test_cog.py b/tests/bot/exts/backend/sync/test_cog.py index 22a07313e..fdd0ab74a 100644 --- a/tests/bot/exts/backend/sync/test_cog.py +++ b/tests/bot/exts/backend/sync/test_cog.py @@ -60,13 +60,13 @@ class SyncCogTestCase(unittest.IsolatedAsyncioTestCase):  class SyncCogTests(SyncCogTestCase):      """Tests for the Sync cog.""" +    @mock.patch("bot.utils.scheduling.create_task")      @mock.patch.object(Sync, "sync_guild", new_callable=mock.MagicMock) -    def test_sync_cog_init(self, sync_guild): +    def test_sync_cog_init(self, sync_guild, create_task):          """Should instantiate syncers and run a sync for the guild."""          # Reset because a Sync cog was already instantiated in setUp.          self.RoleSyncer.reset_mock()          self.UserSyncer.reset_mock() -        self.bot.loop.create_task = mock.MagicMock()          mock_sync_guild_coro = mock.MagicMock()          sync_guild.return_value = mock_sync_guild_coro @@ -74,7 +74,8 @@ class SyncCogTests(SyncCogTestCase):          Sync(self.bot)          sync_guild.assert_called_once_with() -        self.bot.loop.create_task.assert_called_once_with(mock_sync_guild_coro) +        create_task.assert_called_once() +        self.assertEqual(create_task.call_args.args[0], mock_sync_guild_coro)      async def test_sync_cog_sync_guild(self):          """Roles and users should be synced only if a guild is successfully retrieved.""" diff --git a/tests/bot/exts/backend/sync/test_users.py b/tests/bot/exts/backend/sync/test_users.py index 27932be95..2fc97af2d 100644 --- a/tests/bot/exts/backend/sync/test_users.py +++ b/tests/bot/exts/backend/sync/test_users.py @@ -1,6 +1,8 @@  import unittest  from unittest import mock +from discord.errors import NotFound +  from bot.exts.backend.sync._syncers import UserSyncer, _Diff  from tests import helpers @@ -10,7 +12,7 @@ def fake_user(**kwargs):      kwargs.setdefault("id", 43)      kwargs.setdefault("name", "bob the test man")      kwargs.setdefault("discriminator", 1337) -    kwargs.setdefault("roles", [666]) +    kwargs.setdefault("roles", [helpers.MockRole(id=666)])      kwargs.setdefault("in_guild", True)      return kwargs @@ -134,6 +136,7 @@ class UserSyncerDiffTests(unittest.IsolatedAsyncioTestCase):              self.get_mock_member(fake_user()),              None          ] +        guild.fetch_member.side_effect = NotFound(mock.Mock(status=404), "Not found")          actual_diff = await UserSyncer._get_diff(guild)          expected_diff = ([], [{"id": 63, "in_guild": False}], None) @@ -158,6 +161,7 @@ class UserSyncerDiffTests(unittest.IsolatedAsyncioTestCase):              self.get_mock_member(updated_user),              None          ] +        guild.fetch_member.side_effect = NotFound(mock.Mock(status=404), "Not found")          actual_diff = await UserSyncer._get_diff(guild)          expected_diff = ([new_user], [{"id": 55, "name": "updated"}, {"id": 63, "in_guild": False}], None) @@ -177,6 +181,7 @@ class UserSyncerDiffTests(unittest.IsolatedAsyncioTestCase):              self.get_mock_member(fake_user()),              None          ] +        guild.fetch_member.side_effect = NotFound(mock.Mock(status=404), "Not found")          actual_diff = await UserSyncer._get_diff(guild)          expected_diff = ([], [], None) diff --git a/tests/bot/exts/events/test_code_jams.py b/tests/bot/exts/events/test_code_jams.py index b9ee1e363..0856546af 100644 --- a/tests/bot/exts/events/test_code_jams.py +++ b/tests/bot/exts/events/test_code_jams.py @@ -8,8 +8,8 @@ from bot.constants import Roles  from bot.exts.events import code_jams  from bot.exts.events.code_jams import _channels, _cog  from tests.helpers import ( -    MockAttachment, MockBot, MockCategoryChannel, MockContext, -    MockGuild, MockMember, MockRole, MockTextChannel, autospec +    MockAttachment, MockBot, MockCategoryChannel, MockContext, MockGuild, MockMember, MockRole, MockTextChannel, +    autospec  )  TEST_CSV = b"""\ diff --git a/tests/bot/exts/filters/test_token_remover.py b/tests/bot/exts/filters/test_token_remover.py index 51feae9cb..05e790723 100644 --- a/tests/bot/exts/filters/test_token_remover.py +++ b/tests/bot/exts/filters/test_token_remover.py @@ -295,20 +295,21 @@ class TokenRemoverTests(unittest.IsolatedAsyncioTestCase):          )      @autospec("bot.exts.filters.token_remover", "UNKNOWN_USER_LOG_MESSAGE") -    def test_format_userid_log_message_unknown(self, unknown_user_log_message): +    async def test_format_userid_log_message_unknown(self, unknown_user_log_message,):          """Should correctly format the user ID portion when the actual user it belongs to is unknown."""          token = Token("NDcyMjY1OTQzMDYyNDEzMzMy", "XsySD_", "s45jqDV_Iisn-symw0yDRrk_jf4")          unknown_user_log_message.format.return_value = " Partner"          msg = MockMessage(id=555, content="hello world")          msg.guild.get_member.return_value = None +        msg.guild.fetch_member.side_effect = NotFound(mock.Mock(status=404), "Not found") -        return_value = TokenRemover.format_userid_log_message(msg, token) +        return_value = await TokenRemover.format_userid_log_message(msg, token)          self.assertEqual(return_value, (unknown_user_log_message.format.return_value, False))          unknown_user_log_message.format.assert_called_once_with(user_id=472265943062413332)      @autospec("bot.exts.filters.token_remover", "KNOWN_USER_LOG_MESSAGE") -    def test_format_userid_log_message_bot(self, known_user_log_message): +    async def test_format_userid_log_message_bot(self, known_user_log_message):          """Should correctly format the user ID portion when the ID belongs to a known bot."""          token = Token("NDcyMjY1OTQzMDYyNDEzMzMy", "XsySD_", "s45jqDV_Iisn-symw0yDRrk_jf4")          known_user_log_message.format.return_value = " Partner" @@ -316,7 +317,7 @@ class TokenRemoverTests(unittest.IsolatedAsyncioTestCase):          msg.guild.get_member.return_value.__str__.return_value = "Sam"          msg.guild.get_member.return_value.bot = True -        return_value = TokenRemover.format_userid_log_message(msg, token) +        return_value = await TokenRemover.format_userid_log_message(msg, token)          self.assertEqual(return_value, (known_user_log_message.format.return_value, True)) @@ -327,12 +328,12 @@ class TokenRemoverTests(unittest.IsolatedAsyncioTestCase):          )      @autospec("bot.exts.filters.token_remover", "KNOWN_USER_LOG_MESSAGE") -    def test_format_log_message_user_token_user(self, user_token_message): +    async def test_format_log_message_user_token_user(self, user_token_message):          """Should correctly format the user ID portion when the ID belongs to a known user."""          token = Token("NDY3MjIzMjMwNjUwNzc3NjQx", "XsySD_", "s45jqDV_Iisn-symw0yDRrk_jf4")          user_token_message.format.return_value = "Partner" -        return_value = TokenRemover.format_userid_log_message(self.msg, token) +        return_value = await TokenRemover.format_userid_log_message(self.msg, token)          self.assertEqual(return_value, (user_token_message.format.return_value, True))          user_token_message.format.assert_called_once_with( diff --git a/tests/bot/exts/moderation/infraction/test_infractions.py b/tests/bot/exts/moderation/infraction/test_infractions.py index f844a9181..4d01e18a5 100644 --- a/tests/bot/exts/moderation/infraction/test_infractions.py +++ b/tests/bot/exts/moderation/infraction/test_infractions.py @@ -3,6 +3,8 @@ import textwrap  import unittest  from unittest.mock import ANY, AsyncMock, MagicMock, Mock, patch +from discord.errors import NotFound +  from bot.constants import Event  from bot.exts.moderation.infraction import _utils  from bot.exts.moderation.infraction.infractions import Infractions @@ -13,12 +15,13 @@ class TruncationTests(unittest.IsolatedAsyncioTestCase):      """Tests for ban and kick command reason truncation."""      def setUp(self): +        self.me = MockMember(id=7890, roles=[MockRole(id=7890, position=5)])          self.bot = MockBot()          self.cog = Infractions(self.bot) -        self.user = MockMember(id=1234, top_role=MockRole(id=3577, position=10)) -        self.target = MockMember(id=1265, top_role=MockRole(id=9876, position=0)) +        self.user = MockMember(id=1234, roles=[MockRole(id=3577, position=10)]) +        self.target = MockMember(id=1265, roles=[MockRole(id=9876, position=1)])          self.guild = MockGuild(id=4567) -        self.ctx = MockContext(bot=self.bot, author=self.user, guild=self.guild) +        self.ctx = MockContext(me=self.me, bot=self.bot, author=self.user, guild=self.guild)      @patch("bot.exts.moderation.infraction._utils.get_active_infraction")      @patch("bot.exts.moderation.infraction._utils.post_infraction") @@ -64,8 +67,8 @@ class VoiceBanTests(unittest.IsolatedAsyncioTestCase):      def setUp(self):          self.bot = MockBot() -        self.mod = MockMember(top_role=10) -        self.user = MockMember(top_role=1, roles=[MockRole(id=123456)]) +        self.mod = MockMember(roles=[MockRole(id=7890123, position=10)]) +        self.user = MockMember(roles=[MockRole(id=123456, position=1)])          self.guild = MockGuild()          self.ctx = MockContext(bot=self.bot, author=self.mod)          self.cog = Infractions(self.bot) @@ -195,6 +198,7 @@ class VoiceBanTests(unittest.IsolatedAsyncioTestCase):      async def test_voice_unban_user_not_found(self):          """Should include info to return dict when user was not found from guild."""          self.guild.get_member.return_value = None +        self.guild.fetch_member.side_effect = NotFound(Mock(status=404), "Not found")          result = await self.cog.pardon_voice_ban(self.user.id, self.guild)          self.assertEqual(result, {"Info": "User was not found in the guild."}) diff --git a/tests/bot/exts/moderation/test_incidents.py b/tests/bot/exts/moderation/test_incidents.py index cbf7f7bcf..c98edf08a 100644 --- a/tests/bot/exts/moderation/test_incidents.py +++ b/tests/bot/exts/moderation/test_incidents.py @@ -11,15 +11,8 @@ import discord  from bot.constants import Colours  from bot.exts.moderation import incidents  from tests.helpers import ( -    MockAsyncWebhook, -    MockAttachment, -    MockBot, -    MockMember, -    MockMessage, -    MockReaction, -    MockRole, -    MockTextChannel, -    MockUser, +    MockAsyncWebhook, MockAttachment, MockBot, MockMember, MockMessage, MockReaction, MockRole, MockTextChannel, +    MockUser  ) diff --git a/tests/bot/exts/moderation/test_silence.py b/tests/bot/exts/moderation/test_silence.py index 59a5893ef..ef8394be8 100644 --- a/tests/bot/exts/moderation/test_silence.py +++ b/tests/bot/exts/moderation/test_silence.py @@ -12,14 +12,7 @@ from discord import PermissionOverwrite  from bot.constants import Channels, Guild, MODERATION_ROLES, Roles  from bot.exts.moderation import silence  from tests.helpers import ( -    MockBot, -    MockContext, -    MockGuild, -    MockMember, -    MockRole, -    MockTextChannel, -    MockVoiceChannel, -    autospec +    MockBot, MockContext, MockGuild, MockMember, MockRole, MockTextChannel, MockVoiceChannel, autospec  )  redis_session = None diff --git a/tests/bot/test_converters.py b/tests/bot/test_converters.py index f84de453d..c23d66663 100644 --- a/tests/bot/test_converters.py +++ b/tests/bot/test_converters.py @@ -6,12 +6,7 @@ from unittest.mock import MagicMock, patch  from dateutil.relativedelta import relativedelta  from discord.ext.commands import BadArgument -from bot.converters import ( -    Duration, -    HushDurationConverter, -    ISODateTime, -    PackageName, -) +from bot.converters import Duration, HushDurationConverter, ISODateTime, PackageName  class ConverterTests(unittest.IsolatedAsyncioTestCase): diff --git a/tests/helpers.py b/tests/helpers.py index 3978076ed..83b9b2363 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -235,6 +235,7 @@ class MockMember(CustomMockMixin, unittest.mock.Mock, ColourMixin, HashableMixin          self.roles = [MockRole(name="@everyone", position=1, id=0)]          if roles:              self.roles.extend(roles) +        self.top_role = max(self.roles)          if 'mention' not in kwargs:              self.mention = f"@{self.name}" @@ -278,7 +279,10 @@ def _get_mock_loop() -> unittest.mock.Mock:      # Since calling `create_task` on our MockBot does not actually schedule the coroutine object      # as a task in the asyncio loop, this `side_effect` calls `close()` on the coroutine object      # to prevent "has not been awaited"-warnings. -    loop.create_task.side_effect = lambda coroutine: coroutine.close() +    def mock_create_task(coroutine, **kwargs): +        coroutine.close() +        return unittest.mock.Mock() +    loop.create_task.side_effect = mock_create_task      return loop @@ -439,6 +443,7 @@ class MockContext(CustomMockMixin, unittest.mock.MagicMock):      def __init__(self, **kwargs) -> None:          super().__init__(**kwargs) +        self.me = kwargs.get('me', MockMember())          self.bot = kwargs.get('bot', MockBot())          self.guild = kwargs.get('guild', MockGuild())          self.author = kwargs.get('author', MockMember()) diff --git a/tests/test_base.py b/tests/test_base.py index a7db4bf3e..365805a71 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -1,8 +1,7 @@  import logging -import unittest  import unittest.mock - +from bot.log import get_logger  from tests.base import LoggingTestsMixin, _CaptureLogHandler @@ -15,7 +14,7 @@ class LoggingTestCaseTests(unittest.TestCase):      @classmethod      def setUpClass(cls): -        cls.log = logging.getLogger(__name__) +        cls.log = get_logger(__name__)      def test_assert_not_logs_does_not_raise_with_no_logs(self):          """Test if LoggingTestCase.assertNotLogs does not raise when no logs were emitted.""" @@ -56,15 +55,15 @@ class LoggingTestCaseTests(unittest.TestCase):      def test_logging_test_case_works_with_logger_instance(self):          """Test if the LoggingTestCase captures logging for provided logger.""" -        log = logging.getLogger("new_logger") +        log = get_logger("new_logger")          with self.assertRaises(AssertionError):              with LoggingTestCase.assertNotLogs(self, logger=log):                  log.info("Hello, this should raise an AssertionError")      def test_logging_test_case_respects_alternative_logger(self):          """Test if LoggingTestCase only checks the provided logger.""" -        log_one = logging.getLogger("log one") -        log_two = logging.getLogger("log two") +        log_one = get_logger("log one") +        log_two = get_logger("log two")          with LoggingTestCase.assertNotLogs(self, logger=log_one):              log_two.info("Hello, this should not raise an AssertionError") | 
