aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2020-08-17 20:14:46 -0700
committerGravatar MarkKoz <[email protected]>2020-08-17 20:14:46 -0700
commit83d74c56af2a777a2a4f6f7f5347598d0000a66b (patch)
tree2055085c9d15f73e01602a14eae5e1e26afdaf1a
parentSilence tests: also test that cache misses preserve other overwrites (diff)
Silence tests: assert against message constants
Duplicating strings in assertions is redundant, closely coupled, and less maintainable.
-rw-r--r--bot/cogs/moderation/silence.py26
-rw-r--r--tests/bot/cogs/moderation/test_silence.py13
2 files changed, 24 insertions, 15 deletions
diff --git a/bot/cogs/moderation/silence.py b/bot/cogs/moderation/silence.py
index de799f64f..9732248ff 100644
--- a/bot/cogs/moderation/silence.py
+++ b/bot/cogs/moderation/silence.py
@@ -17,6 +17,17 @@ from bot.utils.scheduling import Scheduler
log = logging.getLogger(__name__)
+MSG_SILENCE_FAIL = f"{Emojis.cross_mark} current channel is already silenced."
+MSG_SILENCE_PERMANENT = f"{Emojis.check_mark} silenced current channel indefinitely."
+MSG_SILENCE_SUCCESS = Emojis.check_mark + " silenced current channel for {duration} minute(s)."
+
+MSG_UNSILENCE_FAIL = f"{Emojis.cross_mark} current channel was not silenced."
+MSG_UNSILENCE_MANUAL = (
+ f"{Emojis.cross_mark} current channel was not unsilenced because the current "
+ f"overwrites were set manually. Please edit them manually to unsilence."
+)
+MSG_UNSILENCE_SUCCESS = f"{Emojis.check_mark} unsilenced current channel."
+
class SilenceNotifier(tasks.Loop):
"""Loop notifier for posting notices to `alert_channel` containing added channels."""
@@ -96,15 +107,15 @@ class Silence(commands.Cog):
log.debug(f"{ctx.author} is silencing channel #{ctx.channel}.")
if not await self._silence(ctx.channel, persistent=(duration is None), duration=duration):
- await ctx.send(f"{Emojis.cross_mark} current channel is already silenced.")
+ await ctx.send(MSG_SILENCE_FAIL)
return
if duration is None:
- await ctx.send(f"{Emojis.check_mark} silenced current channel indefinitely.")
+ await ctx.send(MSG_SILENCE_PERMANENT)
await self.muted_channel_times.set(ctx.channel.id, -1)
return
- await ctx.send(f"{Emojis.check_mark} silenced current channel for {duration} minute(s).")
+ await ctx.send(MSG_SILENCE_SUCCESS.format(duration=duration))
self.scheduler.schedule_later(duration * 60, ctx.channel.id, ctx.invoke(self.unsilence))
unsilence_time = (datetime.now(tz=timezone.utc) + timedelta(minutes=duration))
@@ -126,14 +137,11 @@ class Silence(commands.Cog):
if not await self._unsilence(channel):
overwrite = channel.overwrites_for(self._verified_role)
if overwrite.send_messages is False and overwrite.add_reactions is False:
- await channel.send(
- f"{Emojis.cross_mark} current channel was not unsilenced because the current "
- f"overwrites were set manually. Please edit them manually to unsilence."
- )
+ await channel.send(MSG_UNSILENCE_MANUAL)
else:
- await channel.send(f"{Emojis.cross_mark} current channel was not silenced.")
+ await channel.send(MSG_UNSILENCE_FAIL)
else:
- await channel.send(f"{Emojis.check_mark} unsilenced current channel.")
+ await channel.send(MSG_UNSILENCE_SUCCESS)
async def _silence(self, channel: TextChannel, persistent: bool, duration: Optional[int]) -> bool:
"""
diff --git a/tests/bot/cogs/moderation/test_silence.py b/tests/bot/cogs/moderation/test_silence.py
index 71608d3f9..168794b6f 100644
--- a/tests/bot/cogs/moderation/test_silence.py
+++ b/tests/bot/cogs/moderation/test_silence.py
@@ -6,8 +6,9 @@ from unittest.mock import Mock
from discord import PermissionOverwrite
+from bot.cogs.moderation import silence
from bot.cogs.moderation.silence import Silence, SilenceNotifier
-from bot.constants import Channels, Emojis, Guild, Roles
+from bot.constants import Channels, Guild, Roles
from tests.helpers import MockBot, MockContext, MockTextChannel, autospec
@@ -151,9 +152,9 @@ class SilenceTests(unittest.IsolatedAsyncioTestCase):
async def test_sent_correct_message(self):
"""Appropriate failure/success message was sent by the command."""
test_cases = (
- (0.0001, f"{Emojis.check_mark} silenced current channel for 0.0001 minute(s).", True,),
- (None, f"{Emojis.check_mark} silenced current channel indefinitely.", True,),
- (5, f"{Emojis.cross_mark} current channel is already silenced.", False,),
+ (0.0001, silence.MSG_SILENCE_SUCCESS.format(duration=0.0001), True,),
+ (None, silence.MSG_SILENCE_PERMANENT, True,),
+ (5, silence.MSG_SILENCE_FAIL, False,),
)
for duration, message, was_silenced in test_cases:
ctx = MockContext()
@@ -280,8 +281,8 @@ class UnsilenceTests(unittest.IsolatedAsyncioTestCase):
async def test_sent_correct_message(self):
"""Appropriate failure/success message was sent by the command."""
test_cases = (
- (True, f"{Emojis.check_mark} unsilenced current channel."),
- (False, f"{Emojis.cross_mark} current channel was not silenced.")
+ (True, silence.MSG_UNSILENCE_SUCCESS),
+ (False, silence.MSG_UNSILENCE_FAIL)
)
for was_unsilenced, message in test_cases:
ctx = MockContext()