test_today_i_did_bot.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:slack-today-i-did 作者: eeue56 项目源码 文件源码
def test_save_and_load_known_user_func_history(mocker, bot, message_context):
    dangerous_commands = ('reload', 'reload-funcs')
    default_args = ('channel',)
    sample_args = {
        int: 'NUM 1',
        str: 'orange',
        datetime.datetime: 'NOW',
        typing.List[str]: 'FOR blurb,blabi',
        inspect._empty: 'help', # guessing it's help's `args` param
    }

    expected_func_names = []

    for command, func in bot.known_user_functions().items():
        if command in dangerous_commands:
            continue

        signature = inspect.signature(func)
        args = (sample_args[param.annotation]
                for (name, param) in signature.parameters.items()
                if name not in default_args)
        message_text = f'{command} {" ".join(args)}'.strip()

        with message_context(bot, sender=MOCK_PERSON):
            spy = mocker.spy(bot, func.__name__)
            mocker.patch.object(bot.rollbar, 'get_item_by_counter', return_value={})
            mocker.patch.object(bot, 'repo')

            # preserve important attributes on the spy
            functools.update_wrapper(spy, func)
            if parser.is_metafunc(func):
                parser.metafunc(spy)

            bot.parse_direct_message({
                'user': MOCK_PERSON,
                'channel': MOCK_CHANNEL,
                'text': message_text
            })

            assert spy.call_count == 1
            expected_func_names.append(func.__name__)

        second_bot = TodayIDidBot('', command_history_file=bot.command_history_file, reports_dir=bot.reports_dir)
        saved_func_names = [command['action'].__name__
                          for command in second_bot.command_history.history[MOCK_CHANNEL]]
        assert saved_func_names == expected_func_names
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号