diff options
Diffstat (limited to '')
| -rw-r--r-- | tests/bot/exts/info/test_information.py | 46 | 
1 files changed, 46 insertions, 0 deletions
| diff --git a/tests/bot/exts/info/test_information.py b/tests/bot/exts/info/test_information.py index d896b7652..c14453bd8 100644 --- a/tests/bot/exts/info/test_information.py +++ b/tests/bot/exts/info/test_information.py @@ -2,6 +2,7 @@ import textwrap  import unittest  import unittest.mock  from datetime import datetime +from textwrap import shorten  import discord @@ -573,3 +574,48 @@ class UserCommandTests(unittest.IsolatedAsyncioTestCase):          create_embed.assert_called_once_with(ctx, self.target, False)          ctx.send.assert_called_once() + + +class RuleCommandTests(unittest.IsolatedAsyncioTestCase): +    """Tests for the `!rule` command.""" + +    def setUp(self) -> None: +        """Set up steps executed before each test is run.""" +        self.bot = helpers.MockBot() +        self.cog = information.Information(self.bot) +        self.ctx = helpers.MockContext(author=helpers.MockMember(id=1, name="Bellaluma")) +        self.full_rules = [ +            ( +                "First rule", +                ["first", "number_one"] +            ), +            ( +                "Second rule", +                ["second", "number_two"] +            ), +            ( +                "Third rule", +                ["third", "number_three"] +            ) +        ] +        self.bot.api_client.get.return_value = self.full_rules + +    async def test_return_none_if_one_rule_number_is_invalid(self): + +        test_cases = [ +            (('1', '6', '7', '8'), (6, 7, 8)), +            (('10', "first"), (10, )), +            (("first", 10), (10, )) +        ] + +        for raw_user_input, extracted_rule_numbers in test_cases: +            invalid = ", ".join( +                str(rule_number) for rule_number in extracted_rule_numbers +                if rule_number < 1 or rule_number > len(self.full_rules)) + +            final_rule_numbers = await self.cog.rules(self.cog, self.ctx, *raw_user_input) + +            self.assertEqual( +                self.ctx.send.call_args, +                unittest.mock.call(shorten(":x: Invalid rule indices: " + invalid, 75, placeholder=" ..."))) +            self.assertEqual(None, final_rule_numbers) | 
