예제 #1
0
async def test_get_non_bot_members():
    test_config = dpytest.get_config()
    client = test_config.client
    guild = test_config.guilds[0]
    assert len(IntroCog.get_non_bot_members(guild)) == 1, [
        non_bot_member.name
        for non_bot_member in IntroCog.get_non_bot_members(guild)
    ]
    await dpytest.member_join()
    assert len(IntroCog.get_non_bot_members(guild)) == 2, [
        non_bot_member.name
        for non_bot_member in IntroCog.get_non_bot_members(guild)
    ]
    for i in range(3):
        await dpytest.member_join(name=f'TestUser{str(i)}')
    assert len(IntroCog.get_non_bot_members(guild)) == 5, [
        non_bot_member.name
        for non_bot_member in IntroCog.get_non_bot_members(guild)
    ]
    print([
        str(non_bot_member) + " " + str(non_bot_member.bot)
        for non_bot_member in IntroCog.get_non_bot_members(guild)
    ])
    await dpytest.kick_callback(guild, guild.get_member(client.user.id))
    assert len(IntroCog.get_non_bot_members(guild)) == 5, [
        non_bot_member.name
        for non_bot_member in IntroCog.get_non_bot_members(guild)
    ]
    print([
        str(non_bot_member) + " " + str(non_bot_member.bot)
        for non_bot_member in IntroCog.get_non_bot_members(guild)
    ])
예제 #2
0
async def test_on_member_join():
    test_config = dpytest.get_config()
    client = test_config.client
    guild = dpytest.back.make_guild('TestMemberJoin', id_num=1234)
    test_config.guilds.append(guild)
    await dpytest.member_join(1, client.user)
    await asyncio.sleep(0.25)
    welcome_message = IntroCog.get_guild_welcome_message(guild.id)
    await dpytest.member_join(1)
    dpytest.verify_message(welcome_message)
    DBManager.update_guild_welcome_message(guild.id, 'This is an updated welcome message.')
    await asyncio.sleep(0.25)
    welcome_message = IntroCog.get_guild_welcome_message(guild.id)
    await dpytest.member_join(1)
    dpytest.verify_message(welcome_message)
예제 #3
0
async def test_update_welcome_message_too_long():
    import random, string
    guild = dpytest.get_config().guilds[0]
    old_message = IntroCog.get_guild_welcome_message(guild.id)
    new_message = "".join(random.choice(string.ascii_letters) for _ in range(1800))
    msg_mock = dpytest.back.make_message('y', dpytest.get_config().members[0], dpytest.get_config().channels[0])
    with mock.patch('cogs.IntroCog.wait_for_message', mock.AsyncMock(return_value=msg_mock)):
        await dpytest.message(KoalaBot.COMMAND_PREFIX + "update_welcome_message " + new_message)
    dpytest.verify_message("Your welcome message is too long to send, sorry. The maximum character limit is 1600.")
    dpytest.verify_message(assert_nothing=True)
    assert DBManager.fetch_guild_welcome_message(guild.id) != new_message
예제 #4
0
async def test_wait_for_message(utils_cog):
    bot = dpytest.get_config().client
    await dpytest.message(KoalaBot.COMMAND_PREFIX + "store_ctx")
    ctx = utils_cog.get_last_ctx()

    import threading
    t2 = threading.Timer(interval=1.0, function=dpytest.message, args=("y"))
    t2.start()
    fut = IntroCog.wait_for_message(bot, ctx)
    t2.join()
    assert fut, dpytest.sent_queue
예제 #5
0
def setup_function():
    """ setup any state specific to the execution of the given module."""
    global intro_cog, utils_cog
    bot = commands.Bot(command_prefix=KoalaBot.COMMAND_PREFIX)
    utils_cog = TestUtilsCog(bot)
    intro_cog = IntroCog.IntroCog(bot)
    bot.add_cog(intro_cog)
    bot.add_cog(utils_cog)
    dpytest.configure(bot)
    print("Tests starting")
    return dpytest.get_config()
예제 #6
0
async def test_cancel_update_welcome_message():
    guild = dpytest.get_config().guilds[0]
    old_message = IntroCog.get_guild_welcome_message(guild.id)
    new_message = "this is a non default message"
    msg_mock = dpytest.back.make_message('n', dpytest.get_config().members[0], dpytest.get_config().channels[0])
    with mock.patch('cogs.IntroCog.wait_for_message', mock.AsyncMock(return_value=msg_mock)):
        await dpytest.message(KoalaBot.COMMAND_PREFIX + "update_welcome_message " + new_message)

    dpytest.verify_message(f"""Your current welcome message is:\n\r{old_message}""")
    dpytest.verify_message(f"""Your new welcome message will be:\n\r{new_message}\n\r{IntroCog.BASE_LEGAL_MESSAGE}""" +
                           """\n\rWould you like to update the message? Y/N?""")
    dpytest.verify_message("Okay, I won't update the welcome message then.")
    dpytest.verify_message(assert_nothing=True)
    assert DBManager.fetch_guild_welcome_message(guild.id) != new_message
예제 #7
0
def intro_cog(bot):
    intro_cog = IntroCog.IntroCog(bot)
    bot.add_cog(intro_cog)
    dpytest.configure(bot)
    print("Tests starting")
    return intro_cog
예제 #8
0
async def test_view_welcome_message():
    guild = dpytest.get_config().guilds[0]
    old_message = IntroCog.get_guild_welcome_message(guild.id)
    await dpytest.message(KoalaBot.COMMAND_PREFIX + "welcomeViewMsg ")
    dpytest.verify_message(f"""Your current welcome message is:\n\r{old_message}""")
예제 #9
0
async def test_get_guild_welcome_message(guild_id, expected):
    val = IntroCog.get_guild_welcome_message(guild_id)
    assert val == f"{expected}\r\n{IntroCog.BASE_LEGAL_MESSAGE}", val