Beispiel #1
0
async def test_recalculate_leader_returns_new_highest_points_user(
        target_user: User, old_point_leader: User, guild: Guild):
    target_user.points = OLD_POINT_LEADER_POINTS + 1
    target_user.save()

    new_leader = await recalculate_leader(guild)

    assert new_leader == target_user
Beispiel #2
0
def add_xp(user: User, amount: int, cooldown=timedelta(minutes=5)) -> User:
    if user.xp_last_update_time + cooldown > datetime.now():
        return user
    LOG.info(f"Adding {amount} xp for user {user.name}")
    user.xp += amount
    user.xp_last_update_time = datetime.now()
    user.save()
    return user
Beispiel #3
0
async def test_recalculate_leader_reassigns_roles(
        target_user: User, old_point_leader: User,
        leader_role: PointLeaderRole):
    target_user.points = OLD_POINT_LEADER_POINTS + 1
    target_user.save()

    discord_role = MagicMock()
    old_leader_member = AsyncMock(roles=[discord_role], spec=Member)
    new_leader_member = AsyncMock(roles=[], spec=Member)
    guild = AsyncMock(id=GUILD_ID, spec=Guild)
    guild.get_member.return_value = new_leader_member
    guild.members = [new_leader_member, old_leader_member]
    guild.get_role.return_value = discord_role
    await recalculate_leader(guild)

    new_leader_member.add_roles.assert_called_with(discord_role)
    old_leader_member.remove_roles.assert_called_with(discord_role)
Beispiel #4
0
def add_points(command_user: User, target_user: User, points: int) -> User:
    LOG.info(f"Giving {target_user.name} {points}")
    log_points_change(command_user, target_user, points)
    target_user.points += points
    target_user.save()
    return target_user