diff options
| -rw-r--r-- | bot/exts/info/help.py | 4 | ||||
| -rw-r--r-- | tests/bot/exts/info/test_help.py | 23 | 
2 files changed, 25 insertions, 2 deletions
| diff --git a/bot/exts/info/help.py b/bot/exts/info/help.py index bf9ea5986..0235bbaf3 100644 --- a/bot/exts/info/help.py +++ b/bot/exts/info/help.py @@ -125,9 +125,9 @@ class CustomHelpCommand(HelpCommand):          Will return an instance of the `HelpQueryNotFound` exception with the error message and possible matches.          """ -        choices = await self.get_all_help_choices() +        choices = list(await self.get_all_help_choices())          result = process.extract(default_process(string), choices, scorer=fuzz.ratio, score_cutoff=60, processor=None) -        return HelpQueryNotFound(f'Query "{string}" not found.', dict(result)) +        return HelpQueryNotFound(f'Query "{string}" not found.', {choice[0]: choice[1] for choice in result})      async def subcommand_not_found(self, command: Command, string: str) -> "HelpQueryNotFound":          """ diff --git a/tests/bot/exts/info/test_help.py b/tests/bot/exts/info/test_help.py new file mode 100644 index 000000000..604c69671 --- /dev/null +++ b/tests/bot/exts/info/test_help.py @@ -0,0 +1,23 @@ +import unittest + +import rapidfuzz + +from bot.exts.info import help +from tests.helpers import MockBot, MockContext, autospec + + +class HelpCogTests(unittest.IsolatedAsyncioTestCase): +    def setUp(self) -> None: +        """Attach an instance of the cog to the class for tests.""" +        self.bot = MockBot() +        self.cog = help.Help(self.bot) +        self.ctx = MockContext(bot=self.bot) +        self.bot.help_command.context = self.ctx + +    @autospec(help.CustomHelpCommand, "get_all_help_choices", return_value={"help"}, pass_mocks=False) +    async def test_help_fuzzy_matching(self): +        """Test fuzzy matching of commands when called from help.""" +        result = await self.bot.help_command.command_not_found("holp") + +        match = {"help": rapidfuzz.fuzz.ratio("help", "holp")} +        self.assertEqual(match, result.possible_matches) | 
