async def get_player(self, ctx, user_id=None) -> Player: """ Returns a Player object from a Discord context’s author and update name changes. """ if not user_id: user = ctx.author else: user = await self.fetch_user(user_id) player = self.players_session.merge( Player(user)) # This will automatically update name changes self.players_session.commit() return player
async def test_scoring(caplog, config): """ Testing queue process by hand. """ caplog.set_level(logging.INFO) for member_id in range(0, 10): discord_user = config.config.members[member_id] role = roles_list[member_id % 5] player = Player(discord_user) # Put the player in our players_session player = config.bot.players_session.merge(player) config.queue_cog.add_player_to_queue(player, role, config.channel_id) players, score = config.queue_cog.find_best_game(config.channel_id) assert score > -0.001
async def test_player(caplog): """ Tests the addition of the Bot user as a player itself. Also tests PlayerRating and makes sure the on_cascade flags are applied properly. """ caplog.set_level(logging.INFO) from inhouse_bot.common_utils import discord_token from inhouse_bot.sqlite.player_rating import PlayerRating from inhouse_bot.sqlite.sqlite_utils import get_session from inhouse_bot.sqlite.player import Player client = discord.Client() await client.login(discord_token) test_user = await client.fetch_user(707853630681907253) await client.close() session = get_session() player = Player(test_user) player = session.merge(player) session.commit() assert player == session.query(Player).filter( Player.discord_id == test_user.id).one() player_rating = PlayerRating(player, 'mid') session.add(player_rating) session.commit() assert player.ratings session.delete(player) session.commit() assert session.query(Player).filter( Player.discord_id == test_user.id).one_or_none() is None assert session.query(PlayerRating).filter( PlayerRating.player_id == test_user.id).one_or_none() is None
async def test_game(caplog): """ Tests the addition of a game. """ # TODO Make this test cleaner from inhouse_bot.inhouse_bot import InhouseBot from inhouse_bot.sqlite.sqlite_utils import get_session from inhouse_bot.sqlite.sqlite_utils import roles_list from inhouse_bot.sqlite.game import Game from inhouse_bot.sqlite.player import Player from inhouse_bot.sqlite.player_rating import PlayerRating session = get_session() # We create our bot object, a mock server, a mock channel, 10 mock members, and return our cog for testing bot = InhouseBot() dpytest.configure(bot, 1, 1, 10) players = {} for member_id in range(0, 10): role = roles_list[member_id % 5] player = Player(dpytest.get_config().members[member_id]) rating = PlayerRating(player, role) session.add(player) session.add(rating) session.commit() players["blue" if member_id % 2 else "red", role] = player game = Game(players) session.add(game) # Printing ahead of time try: print(game) except AttributeError: assert True session.commit() print(game)