diff options
| author | 2020-03-17 20:11:44 +0100 | |
|---|---|---|
| committer | 2020-03-17 20:11:44 +0100 | |
| commit | cd429230fcb18c7101afd931317d37ad142bfe4b (patch) | |
| tree | 101e51d2093083457e2f9c36203d6bc51f1d22b1 | |
| parent | Use set `discard` instead of `remove`. (diff) | |
Add tests ensuring permissions get preserved.
| -rw-r--r-- | tests/bot/cogs/moderation/test_silence.py | 31 | 
1 files changed, 31 insertions, 0 deletions
| diff --git a/tests/bot/cogs/moderation/test_silence.py b/tests/bot/cogs/moderation/test_silence.py index eee020455..44682a1bd 100644 --- a/tests/bot/cogs/moderation/test_silence.py +++ b/tests/bot/cogs/moderation/test_silence.py @@ -2,6 +2,8 @@ import unittest  from unittest import mock  from unittest.mock import MagicMock, Mock +from discord import PermissionOverwrite +  from bot.cogs.moderation.silence import Silence, SilenceNotifier  from bot.constants import Channels, Emojis, Guild, Roles  from tests.helpers import MockBot, MockContext, MockTextChannel @@ -145,6 +147,20 @@ class SilenceTests(unittest.IsolatedAsyncioTestCase):          channel.set_permissions.assert_called_once()          self.assertFalse(channel.set_permissions.call_args.kwargs['send_messages']) +    async def test_silence_private_preserves_permissions(self): +        """Previous permissions were preserved when channel was silenced.""" +        channel = MockTextChannel() +        # Set up mock channel permission state. +        mock_permissions = PermissionOverwrite() +        mock_permissions_dict = dict(mock_permissions) +        channel.overwrites_for.return_value = mock_permissions +        await self.cog._silence(channel, False, None) +        new_permissions = channel.set_permissions.call_args.kwargs +        # Remove 'send_messages' key because it got changed in the method. +        del new_permissions['send_messages'] +        del mock_permissions_dict['send_messages'] +        self.assertDictEqual(mock_permissions_dict, new_permissions) +      async def test_silence_private_notifier(self):          """Channel should be added to notifier with `persistent` set to `True`, and the other way around."""          channel = MockTextChannel() @@ -197,6 +213,21 @@ class SilenceTests(unittest.IsolatedAsyncioTestCase):              await self.cog._unsilence(channel)          muted_channels.discard.assert_called_once_with(channel) +    @mock.patch.object(Silence, "notifier", create=True) +    async def test_unsilence_private_preserves_permissions(self, _): +        """Previous permissions were preserved when channel was unsilenced.""" +        channel = MockTextChannel() +        # Set up mock channel permission state. +        mock_permissions = PermissionOverwrite(send_messages=False) +        mock_permissions_dict = dict(mock_permissions) +        channel.overwrites_for.return_value = mock_permissions +        await self.cog._unsilence(channel) +        new_permissions = channel.set_permissions.call_args.kwargs +        # Remove 'send_messages' key because it got changed in the method. +        del new_permissions['send_messages'] +        del mock_permissions_dict['send_messages'] +        self.assertDictEqual(mock_permissions_dict, new_permissions) +      @mock.patch("bot.cogs.moderation.silence.asyncio")      @mock.patch.object(Silence, "_mod_alerts_channel", create=True)      def test_cog_unload_starts_task(self, alert_channel, asyncio_mock): | 
