public async Task BotLogic_GetAllActiveBots_Should_Only_Return_Recently_Died_Bots()
        {
            // Arrange
            var       randomHelper        = new Mock <IRandomHelper>();
            var       botRepository       = new Mock <IRepository <Bot> >();
            var       scriptRepository    = new Mock <IRepository <BotScript> >();
            var       playerRepository    = new Mock <IRepository <Player> >();
            var       botMapper           = new BotMapper();
            var       botToCreateMapper   = new BotToCreateMapper();
            var       arenaLogic          = new Mock <IArenaLogic>();
            var       configurationHelper = new Mock <IConfigurationHelper>();
            IBotLogic botLogic            = new BotLogic(
                randomHelper.Object, botRepository.Object, scriptRepository.Object, playerRepository.Object,
                botMapper, botToCreateMapper, arenaLogic.Object, configurationHelper.Object);

            var bots = new List <Bot>
            {
                new Bot
                {
                    Name          = "BOT1",
                    CurrentHealth = 0,
                    TimeOfDeath   = DateTime.UtcNow.AddSeconds(-11)
                },
                new Bot
                {
                    Name          = "BOT2",
                    Id            = Guid.NewGuid(),
                    CurrentHealth = 0,
                    TimeOfDeath   = DateTime.UtcNow.AddSeconds(-1)
                }
            };

            // Mock
            botRepository.Setup(x => x.Find(Any.Predicate <Bot>(), Any.Include <Bot, Player>()))
            .ReturnsAsync((Expression <Func <Bot, bool> > predicate, Expression <Func <Bot, Player> > include) =>
                          (IList <Bot>)bots.Where(predicate.Compile()).ToList());

            // Act
            var result = await botLogic.GetAllActiveBots();

            // Assert
            result.Should().HaveCount(1);
            result.Should().Contain(x => x.Name == "BOT2");
        }
        public async Task BotLogic_GetAllActiveBots_Should_Only_Return_Active_Bots()
        {
            // Arrange
            var       randomHelper        = new Mock <IRandomHelper>();
            var       botRepository       = new Mock <IRepository <Bot> >();
            var       scriptRepository    = new Mock <IRepository <BotScript> >();
            var       playerRepository    = new Mock <IRepository <Player> >();
            var       botMapper           = new BotMapper();
            var       botToCreateMapper   = new BotToCreateMapper();
            var       arenaLogic          = new Mock <IArenaLogic>();
            var       configurationHelper = new Mock <IConfigurationHelper>();
            IBotLogic botLogic            = new BotLogic(
                randomHelper.Object, botRepository.Object, scriptRepository.Object, playerRepository.Object,
                botMapper, botToCreateMapper, arenaLogic.Object, configurationHelper.Object);

            var bots = new List <Bot>
            {
                new Bot
                {
                    CurrentHealth = 1,
                    Player        = new Player {
                        Name = "PlayerName"
                    }
                }
            };

            // Mock
            botRepository.Setup(x => x.Find(Any.Predicate <Bot>(), Any.Include <Bot, Player>()))
            .ReturnsAsync((Expression <Func <Bot, bool> > predicate, Expression <Func <Bot, Player> > include) =>
                          (IList <Bot>)bots.Where(predicate.Compile()).ToList());

            // Act
            var result = await botLogic.GetAllActiveBots();

            // Assert
            result.Should().HaveCount(1);
            result.Should().Contain(x => x.PlayerName == "PlayerName");
        }