public void SetUp() { autoMocker = new RhinoAutoMocker<PlayerRetriever>(); autoMocker.PartialMockTheClassUnderTest(); expectedChampion = new Champion() { Id = 100, PlayerId = 101, Player = new Player() }; expectedNemesis = new Nemesis() { Id = 155, NemesisPlayerId = 8888, NemesisPlayer = new Player() }; expectedPriorNemesis = new Nemesis() { Id = 22222, NemesisPlayerId = 4444, NemesisPlayer = new Player() }; var nemesisForPlayerWithOnlyACurrentNemesis = new Nemesis { Id = 33333, NemesisPlayer = new Player() }; player = new Player() { Id = 1351, Name = "the player", PlayerGameResults = new List<PlayerGameResult>(), GamingGroup = new GamingGroup{ Id = gamingGroupId }, GamingGroupId = gamingGroupId, Active = true, NemesisId = expectedNemesis.Id, Nemesis = expectedNemesis, PreviousNemesisId = expectedPriorNemesis.Id, PreviousNemesis = expectedPriorNemesis }; expectedFormerChampionGame = new GameDefinition { Id = 111, PreviousChampionId = player.Id, GamingGroupId = gamingGroupId }; playerWithNoNemesisEver = new Player() { Id = 161266939, GamingGroup = new GamingGroup { Id = gamingGroupId }, GamingGroupId = gamingGroupId }; playerWithOnlyACurrentNemesis = new Player() { Id = 888484, NemesisId = 7, Nemesis = nemesisForPlayerWithOnlyACurrentNemesis, GamingGroup = new GamingGroup { Id = gamingGroupId }, GamingGroupId = gamingGroupId }; playerWithAChampionship = new Player() { Id = 101, GamingGroup = new GamingGroup { Id = gamingGroupId } }; var players = new List<Player>() { player, playerWithNoNemesisEver, playerWithOnlyACurrentNemesis, playerWithAChampionship }; autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<Player>()) .Return(players.AsQueryable()); expectedPlayerStatistics = new PlayerStatistics { NemePointsSummary = new NemePointsSummary(1, 2, 4) }; autoMocker.ClassUnderTest.Expect(repo => repo.GetPlayerStatistics(Arg<int>.Is.Anything)) .Repeat.Once() .Return(expectedPlayerStatistics); autoMocker.ClassUnderTest.Expect(mock => mock.GetPlayerGameResultsWithPlayedGameAndGameDefinition( Arg<int>.Is.Anything, Arg<int>.Is.Anything)) .Repeat.Once() .Return(player.PlayerGameResults.ToList()); this.expectedMinions = new List<Player>(); autoMocker.ClassUnderTest.Expect(mock => mock.GetMinions(Arg<int>.Is.Anything)) .Return(this.expectedMinions); expectedPlayerGameSummaries = new List<PlayerGameSummary> { new PlayerGameSummary() }; autoMocker.Get<IPlayerRepository>().Expect(mock => mock.GetPlayerGameSummaries(Arg<int>.Is.Anything)) .Return(expectedPlayerGameSummaries); expectedChampionedGames = new List<Champion> { expectedChampion }; autoMocker.ClassUnderTest.Expect(mock => mock.GetChampionedGames(Arg<int>.Is.Anything)) .Return(expectedChampionedGames); expectedFormerChampionedGames = new List<GameDefinition> { expectedFormerChampionGame }; autoMocker.ClassUnderTest.Expect(mock => mock.GetFormerChampionedGames(Arg<int>.Is.Anything)) .Return(expectedFormerChampionedGames); expectedPlayerVersusPlayerStatistics = new List<PlayerVersusPlayerStatistics>(); autoMocker.Get<IPlayerRepository>().Expect(mock => mock.GetPlayerVersusPlayersStatistics(Arg<int>.Is.Anything)) .Return(expectedPlayerVersusPlayerStatistics); autoMocker.Get<IPlayerRepository>().Expect(mock => mock.GetLongestWinningStreak(player.Id)).Return(expectedLongestWinningStreak); autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<PlayerAchievement>()).Return(new List<PlayerAchievement>().AsQueryable()); }
public virtual PlayerStatistics GetPlayerStatistics(int playerId) { var playerStatistics = new PlayerStatistics(); var gameDefinitionTotals = GetGameDefinitionTotals(playerId); playerStatistics.GameDefinitionTotals = gameDefinitionTotals; var topLevelTotals = GetTopLevelTotals(gameDefinitionTotals); playerStatistics.TotalGames = topLevelTotals.TotalGames; playerStatistics.TotalGamesLost = topLevelTotals.TotalGamesLost; playerStatistics.TotalGamesWon = topLevelTotals.TotalGamesWon; if (playerStatistics.TotalGames > 0) { playerStatistics.WinPercentage = (int)((decimal)playerStatistics.TotalGamesWon / (playerStatistics.TotalGames) * 100); } playerStatistics.NemePointsSummary = GetNemePointsSummary(playerId); //had to cast to handle the case where there is no data: //http://stackoverflow.com/questions/6864311/the-cast-to-value-type-int32-failed-because-the-materialized-value-is-null playerStatistics.AveragePlayersPerGame = (float?)dataContext.GetQueryable<PlayedGame>() .Where(playedGame => playedGame.PlayerGameResults.Any(result => result.PlayerId == playerId)) .Average(game => (int?)game.NumberOfPlayers) ?? 0F; return playerStatistics; }