diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bot/exts/backend/test_error_handler.py | 50 | ||||
| -rw-r--r-- | tests/helpers.py | 11 | 
2 files changed, 35 insertions, 26 deletions
| diff --git a/tests/bot/exts/backend/test_error_handler.py b/tests/bot/exts/backend/test_error_handler.py index 83bc3c4a1..14e7a4125 100644 --- a/tests/bot/exts/backend/test_error_handler.py +++ b/tests/bot/exts/backend/test_error_handler.py @@ -9,7 +9,7 @@ from bot.exts.backend import error_handler  from bot.exts.info.tags import Tags  from bot.exts.moderation.silence import Silence  from bot.utils.checks import InWhitelistCheckFailure -from tests.helpers import MockBot, MockContext, MockGuild, MockInteraction, MockRole, MockTextChannel, MockVoiceChannel +from tests.helpers import MockBot, MockContext, MockGuild, MockRole, MockTextChannel, MockVoiceChannel  class ErrorHandlerTests(unittest.IsolatedAsyncioTestCase): @@ -331,65 +331,65 @@ class TryGetTagTests(unittest.IsolatedAsyncioTestCase):      def setUp(self):          self.bot = MockBot() -        self.interaction = MockInteraction() +        self.ctx = MockContext()          self.tag = Tags(self.bot)          self.cog = error_handler.ErrorHandler(self.bot) -        self.bot.get_command.return_value = self.tag.get_command +        self.bot.get_cog.return_value = self.tag      async def test_try_get_tag_get_command(self):          """Should call `Bot.get_command` with `tags get` argument.""" -        self.bot.get_command.reset_mock() -        await self.cog.try_get_tag(self.interaction) -        self.bot.get_command.assert_called_once_with("tags get") +        self.bot.get_cog.reset_mock() +        await self.cog.try_get_tag(self.ctx) +        self.bot.get_cog.assert_called_once_with("Tags")      async def test_try_get_tag_invoked_from_error_handler(self): -        """`self.interaction` should have `invoked_from_error_handler` `True`.""" -        self.interaction.invoked_from_error_handler = False -        await self.cog.try_get_tag(self.interaction) -        self.assertTrue(self.interaction.invoked_from_error_handler) +        """`self.ctx` should have `invoked_from_error_handler` `True`.""" +        self.ctx.invoked_from_error_handler = False +        await self.cog.try_get_tag(self.ctx) +        self.assertTrue(self.ctx.invoked_from_error_handler)      async def test_try_get_tag_no_permissions(self):          """Test how to handle checks failing."""          self.tag.get_command.can_run = AsyncMock(return_value=False) -        self.interaction.invoked_with = "foo" -        self.assertIsNone(await self.cog.try_get_tag(self.interaction, AsyncMock(return_value=False))) +        self.ctx.invoked_with = "foo" +        self.assertIsNone(await self.cog.try_get_tag(self.ctx, AsyncMock(return_value=False)))      async def test_try_get_tag_command_error(self):          """Should call `on_command_error` when `CommandError` raised."""          err = errors.CommandError()          self.tag.get_command.can_run = AsyncMock(side_effect=err)          self.cog.on_command_error = AsyncMock() -        self.assertIsNone(await self.cog.try_get_tag(self.interaction, AsyncMock(side_effect=err))) -        self.cog.on_command_error.assert_awaited_once_with(self.interaction, err) +        self.assertIsNone(await self.cog.try_get_tag(self.ctx, AsyncMock(side_effect=err))) +        self.cog.on_command_error.assert_awaited_once_with(self.ctx, err)      async def test_dont_call_suggestion_tag_sent(self):          """Should never call command suggestion if tag is already sent.""" -        self.interaction.message = MagicMock(content="foo") -        self.interaction.invoke = AsyncMock(return_value=True) +        self.ctx.message = MagicMock(content="foo") +        self.tag.get_command_ctx = AsyncMock(return_value=True)          self.cog.send_command_suggestion = AsyncMock() -        await self.cog.try_get_tag(self.interaction, AsyncMock()) +        await self.cog.try_get_tag(self.ctx)          self.cog.send_command_suggestion.assert_not_awaited()      @patch("bot.exts.backend.error_handler.MODERATION_ROLES", new=[1234])      async def test_dont_call_suggestion_if_user_mod(self):          """Should not call command suggestion if user is a mod.""" -        self.interaction.invoked_with = "foo" -        self.interaction.invoke = AsyncMock(return_value=False) -        self.interaction.user.roles = [MockRole(id=1234)] +        self.ctx.invoked_with = "foo" +        self.ctx.invoke = AsyncMock(return_value=False) +        self.ctx.author.roles = [MockRole(id=1234)]          self.cog.send_command_suggestion = AsyncMock() -        await self.cog.try_get_tag(self.interaction, AsyncMock()) +        await self.cog.try_get_tag(self.ctx)          self.cog.send_command_suggestion.assert_not_awaited()      async def test_call_suggestion(self):          """Should call command suggestion if user is not a mod.""" -        self.interaction.invoked_with = "foo" -        self.interaction.invoke = AsyncMock(return_value=False) +        self.ctx.invoked_with = "foo" +        self.ctx.invoke = AsyncMock(return_value=False)          self.cog.send_command_suggestion = AsyncMock() -        await self.cog.try_get_tag(self.interaction, AsyncMock()) -        self.cog.send_command_suggestion.assert_awaited_once_with(self.interaction, "foo") +        await self.cog.try_get_tag(self.ctx) +        self.cog.send_command_suggestion.assert_awaited_once_with(self.ctx, "foo")  class IndividualErrorHandlerTests(unittest.IsolatedAsyncioTestCase): diff --git a/tests/helpers.py b/tests/helpers.py index 2d20b4d07..0d955b521 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -486,7 +486,6 @@ class MockInteraction(CustomMockMixin, unittest.mock.MagicMock):      Instances of this class will follow the specifications of `discord.Interaction`      instances. For more information, see the `MockGuild` docstring.      """ -    # spec_set = context_instance      def __init__(self, **kwargs) -> None:          super().__init__(**kwargs) @@ -550,6 +549,16 @@ class MockMessage(CustomMockMixin, unittest.mock.MagicMock):          self.channel = kwargs.get('channel', MockTextChannel()) +class MockInteractionMessage(MockMessage): +    """ +    A MagicMock subclass to mock InteractionMessage objects. + +    Instances of this class will follow the specifications of `discord.InteractionMessage` instances. For more +    information, see the `MockGuild` docstring. +    """ +    pass + +  emoji_data = {'require_colons': True, 'managed': True, 'id': 1, 'name': 'hyperlemon'}  emoji_instance = discord.Emoji(guild=MockGuild(), state=unittest.mock.MagicMock(), data=emoji_data) | 
