Example #1
0
        public void ItGetsTheGamesPlayedMetrics()
        {
            using (IDataContext dataContext = new NemeStatsDataContext())
            {
                IPlayerRepository    playerRepository    = new EntityFrameworkPlayerRepository(dataContext);
                IPlayedGameRetriever playedGameRetriever = new PlayedGameRetriever(dataContext);
                IPlayerRetriever     playerRetriever     = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                PlayerStatistics     playerStatistics    = playerRetriever.GetPlayerStatistics(testPlayer1.Id);

                int totalGamesForPlayer1 = testPlayedGames
                                           .Count(playedGame => playedGame.PlayerGameResults
                                                  .Any(playerGameResult => playerGameResult.PlayerId == testPlayer1.Id));
                Assert.That(playerStatistics.TotalGames, Is.EqualTo(totalGamesForPlayer1));

                int totalWinsForPlayer1 = testPlayedGames
                                          .Count(playedGame => playedGame.PlayerGameResults
                                                 .Any(playerGameResult => playerGameResult.PlayerId == testPlayer1.Id && playerGameResult.GameRank == 1));
                Assert.That(playerStatistics.TotalGamesWon, Is.EqualTo(totalWinsForPlayer1));

                int totalLossesForPlayer1 = testPlayedGames
                                            .Count(playedGame => playedGame.PlayerGameResults
                                                   .Any(playerGameResult => playerGameResult.PlayerId == testPlayer1.Id && playerGameResult.GameRank != 1));
                Assert.That(playerStatistics.TotalGamesLost, Is.EqualTo(totalLossesForPlayer1));

                int winPercentageForPlayer1 = (int)((decimal)totalWinsForPlayer1 / (totalGamesForPlayer1) * 100);

                Assert.That(playerStatistics.WinPercentage, Is.EqualTo(winPercentageForPlayer1));
            }
        }
Example #2
0
        public void ItOrdersPlayerGameResultsByTheDatePlayedDescending()
        {
            using (NemeStatsDbContext dbContext = new NemeStatsDbContext())
            {
                using (IDataContext dataContext = new NemeStatsDataContext(dbContext, securedEntityValidatorFactory))
                {
                    int numberOfGamesToRetrieve = 3;

                    INemesisHistoryRetriever nemesisHistoryRetriever = new NemesisHistoryRetriever(dataContext);
                    IPlayerRepository        playerRepository        = new EntityFrameworkPlayerRepository(dataContext);
                    IPlayedGameRetriever     playedGameRetriever     = new PlayedGameRetriever(dataContext);
                    IPlayerRetriever         playerRetriever         = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                    PlayerDetails            playerDetails           = playerRetriever.GetPlayerDetails(testPlayer1.Id, numberOfGamesToRetrieve);

                    long lastTicks = long.MaxValue;;
                    Assert.IsTrue(playerDetails.PlayerGameResults.Count == numberOfGamesToRetrieve);
                    foreach (PlayerGameResult result in playerDetails.PlayerGameResults)
                    {
                        Assert.GreaterOrEqual(lastTicks, result.PlayedGame.DatePlayed.Ticks);

                        lastTicks = result.PlayedGame.DatePlayed.Ticks;
                    }
                }
            }
        }
        public void ItGetsTheTotalPoints()
        {
            using (IDataContext dataContext = new NemeStatsDataContext())
            {
                IPlayerRepository    playerRepository    = new EntityFrameworkPlayerRepository(dataContext);
                IPlayedGameRetriever playedGameRetriever = new PlayedGameRetriever(dataContext);
                IPlayerRetriever     playerRetriever     = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                PlayerStatistics     playerStatistics    = playerRetriever.GetPlayerStatistics(testPlayer1.Id);

                int totalBasePoints         = 0;
                int totalGameDurationPoints = 0;
                int totalWeightBonusPoints  = 0;

                foreach (PlayedGame playedGame in testPlayedGames)
                {
                    if (playedGame.PlayerGameResults.Any(result => result.PlayerId == testPlayer1.Id))
                    {
                        var playerGameResult = playedGame.PlayerGameResults.First(result => result.PlayerId == testPlayer1.Id);
                        totalBasePoints         += playerGameResult.NemeStatsPointsAwarded;
                        totalGameDurationPoints += playerGameResult.GameDurationBonusPoints;
                        totalWeightBonusPoints  += playerGameResult.GameWeightBonusPoints;
                    }
                }

                Assert.AreEqual(totalBasePoints, playerStatistics.NemePointsSummary.BaseNemePoints);
                Assert.AreEqual(totalGameDurationPoints, playerStatistics.NemePointsSummary.GameDurationBonusNemePoints);
                Assert.AreEqual(totalWeightBonusPoints, playerStatistics.NemePointsSummary.WeightBonusNemePoints);
            }
        }
Example #4
0
        public void TestSetUp()
        {
            dataContext         = new NemeStatsDataContext();
            playerRepository    = new EntityFrameworkPlayerRepository(dataContext);
            playedGameRetriever = new PlayedGameRetriever(dataContext);

            playerRetriever = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
        }
Example #5
0
        public void ItGetsTheAveragePlayersPerGame()
        {
            using (IDataContext dataContext = new NemeStatsDataContext())
            {
                IPlayerRepository    playerRepository    = new EntityFrameworkPlayerRepository(dataContext);
                IPlayedGameRetriever playedGameRetriever = new PlayedGameRetriever(dataContext);
                IPlayerRetriever     playerRetriever     = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                PlayerStatistics     playerStatistics    = playerRetriever.GetPlayerStatistics(testPlayer1.Id);

                float averagePlayersPerGame = (float)testPlayedGames.Where(game => game.PlayerGameResults.Any(result => result.PlayerId == testPlayer1.Id))
                                              .Average(game => game.NumberOfPlayers);

                Assert.AreEqual(averagePlayersPerGame, playerStatistics.AveragePlayersPerGame);
            }
        }
Example #6
0
        public void ItSetsPlayerStatistics()
        {
            using (NemeStatsDbContext dbContext = new NemeStatsDbContext())
            {
                using (IDataContext dataContext = new NemeStatsDataContext(dbContext, securedEntityValidatorFactory))
                {
                    INemesisHistoryRetriever nemesisHistoryRetriever = new NemesisHistoryRetriever(dataContext);
                    IPlayerRepository        playerRepository        = new EntityFrameworkPlayerRepository(dataContext);
                    IPlayedGameRetriever     playedGameRetriever     = new PlayedGameRetriever(dataContext);
                    IPlayerRetriever         playerRetriever         = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                    PlayerDetails            playerDetails           = playerRetriever.GetPlayerDetails(testPlayer1.Id, 1);

                    Assert.NotNull(playerDetails.PlayerStats);
                }
            }
        }
Example #7
0
        public void ItReturnsZeroesWhenThereAreNoPlayedGames()
        {
            using (IDataContext dataContext = new NemeStatsDataContext())
            {
                IPlayedGameRetriever playedGameRetriever = new PlayedGameRetriever(dataContext);
                var playerRetriever = new PlayerRetriever(dataContext, new EntityFrameworkPlayerRepository(dataContext), playedGameRetriever);

                var statistics = playerRetriever.GetPlayerStatistics(testPlayerWithNoPlayedGames.Id);

                Assert.That(statistics.TotalGames, Is.EqualTo(0));
                Assert.That(statistics.TotalGamesLost, Is.EqualTo(0));
                Assert.That(statistics.TotalGamesWon, Is.EqualTo(0));
                Assert.That(statistics.NemePointsSummary, Is.EqualTo(new NemePointsSummary(0, 0, 0)));
                Assert.That(statistics.WinPercentage, Is.EqualTo(0));
                Assert.That(statistics.AveragePlayersPerGame, Is.EqualTo(0));
                Assert.That(statistics.GameDefinitionTotals.SummariesOfGameDefinitionTotals.Count, Is.EqualTo(0));
            }
        }
Example #8
0
        public void ItEagerlyFetchesGameDefinitions()
        {
            using (NemeStatsDbContext dbContext = new NemeStatsDbContext())
            {
                using (IDataContext dataContext = new NemeStatsDataContext(dbContext, securedEntityValidatorFactory))
                {
                    dbContext.Configuration.LazyLoadingEnabled   = false;
                    dbContext.Configuration.ProxyCreationEnabled = false;
                    INemesisHistoryRetriever nemesisHistoryRetriever = new NemesisHistoryRetriever(dataContext);
                    IPlayerRepository        playerRepository        = new EntityFrameworkPlayerRepository(dataContext);
                    IPlayedGameRetriever     playedGameRetriever     = new PlayedGameRetriever(dataContext);
                    IPlayerRetriever         playerRetriever         = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                    PlayerDetails            testPlayerDetails       = playerRetriever.GetPlayerDetails(testPlayer1.Id, 1);

                    Assert.NotNull(testPlayerDetails.PlayerGameResults.First().PlayedGame.GameDefinition);
                }
            }
        }
Example #9
0
        public void ItOnlyGetsTheSpecifiedNumberOfRecentGames()
        {
            using (NemeStatsDbContext dbContext = new NemeStatsDbContext())
            {
                using (IDataContext dataContext = new NemeStatsDataContext(dbContext, securedEntityValidatorFactory))
                {
                    int numberOfGamesToRetrieve = 1;

                    INemesisHistoryRetriever nemesisHistoryRetriever = new NemesisHistoryRetriever(dataContext);
                    IPlayerRepository        playerRepository        = new EntityFrameworkPlayerRepository(dataContext);
                    IPlayedGameRetriever     playedGameRetriever     = new PlayedGameRetriever(dataContext);
                    IPlayerRetriever         playerRetriever         = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                    PlayerDetails            playerDetails           = playerRetriever.GetPlayerDetails(testPlayer1.Id, numberOfGamesToRetrieve);

                    Assert.AreEqual(numberOfGamesToRetrieve, playerDetails.PlayerGameResults.Count);
                }
            }
        }
Example #10
0
        public void ItReturnsTheCorrectStatisticsForAnUndefeatedPlayer()
        {
            using (IDataContext dataContext = new NemeStatsDataContext())
            {
                IPlayedGameRetriever playedGameRetriever = new PlayedGameRetriever(dataContext);
                var playerRetriever = new PlayerRetriever(dataContext, new EntityFrameworkPlayerRepository(dataContext), playedGameRetriever);

                var statistics = playerRetriever.GetPlayerStatistics(testPlayer9UndefeatedWith5Games.Id);

                Assert.That(statistics.TotalGames, Is.EqualTo(5));
                Assert.That(statistics.TotalGamesLost, Is.EqualTo(0));
                Assert.That(statistics.TotalGamesWon, Is.EqualTo(5));
                Assert.That(statistics.WinPercentage, Is.EqualTo(100));

                var summariesOfGameDefinitionTotals = statistics.GameDefinitionTotals.SummariesOfGameDefinitionTotals;
                Assert.That(summariesOfGameDefinitionTotals.Count, Is.EqualTo(1));
                var gameDefinitionTotal = summariesOfGameDefinitionTotals[0];
                Assert.That(gameDefinitionTotal.GameDefinitionId, Is.EqualTo(anotherTestGameDefinitionWithOtherGamingGroupId.Id));
            }
        }
Example #11
0
        public void ItGetsTheTotalPoints()
        {
            using (IDataContext dataContext = new NemeStatsDataContext())
            {
                IPlayerRepository    playerRepository    = new EntityFrameworkPlayerRepository(dataContext);
                IPlayedGameRetriever playedGameRetriever = new PlayedGameRetriever(dataContext);
                IPlayerRetriever     playerRetriever     = new PlayerRetriever(dataContext, playerRepository, playedGameRetriever);
                PlayerStatistics     playerStatistics    = playerRetriever.GetPlayerStatistics(testPlayer1.Id);

                int totalPoints = 0;

                foreach (PlayedGame playedGame in testPlayedGames)
                {
                    if (playedGame.PlayerGameResults.Any(result => result.PlayerId == testPlayer1.Id))
                    {
                        totalPoints += playedGame.PlayerGameResults.First(result => result.PlayerId == testPlayer1.Id).NemeStatsPointsAwarded;
                    }
                }

                Assert.AreEqual(totalPoints, playerStatistics.TotalPoints);
            }
        }
 public PlayerUpdaterService(PlayerRetriever retriever)
 {
     _retriever = retriever;
 }
Example #13
0
 public void SetUp()
 {
     _playerRetriever = GetInstance <PlayerRetriever>();
 }