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));
}
}