diff --git a/tests/test_cli.py b/tests/test_cli.py index ef2922ce99aa71d1ec9bfd3b34ad2d0a86c758af..55809df657ede4fe0dba763056395aebbe1fbc2d 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -22,6 +22,7 @@ import argparse import gimmecert.cli +import gimmecert.decorators from unittest import mock @@ -88,3 +89,48 @@ def test_parser_help_contains_examples(): parser = gimmecert.cli.get_parser() assert 'Examples' in parser.description + + +def test_setup_help_subcommand_parser_registered(): + registered_functions = gimmecert.decorators.get_subcommand_parser_setup_functions() + + assert gimmecert.cli.setup_help_subcommand_parser in registered_functions + + +@mock.patch('gimmecert.cli.get_subcommand_parser_setup_functions') +def test_get_parser_calls_setup_subcommand_parser_functions(mock_get_subcommand_parser_setup_functions): + mock_setup1 = mock.Mock() + mock_setup2 = mock.Mock() + mock_get_subcommand_parser_setup_functions.return_value = [mock_setup1, mock_setup2] + + gimmecert.cli.get_parser() + + assert mock_setup1.called + assert mock_setup2.called + + +def test_setup_help_subcommand_parser_adds_parser(): + mock_parser = mock.Mock() + mock_subparsers = mock.Mock() + + gimmecert.cli.setup_help_subcommand_parser(mock_parser, mock_subparsers) + + assert mock_subparsers.add_parser.called + + +def test_help_subcommand_returns_parser(): + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers() + + subparser = gimmecert.cli.setup_help_subcommand_parser(parser, subparsers) + + assert isinstance(subparser, argparse.ArgumentParser) + + +def test_help_subcommand_sets_function_callback(): + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers() + + subparser = gimmecert.cli.setup_help_subcommand_parser(parser, subparsers) + + assert callable(subparser.get_default('func'))