public void ItSetsNemePointsForEachPlayerGameResult()
        {
            var playerOneId       = 1;
            var playerTwoId       = 2;
            var playerOneGameRank = 1;
            var playerTwoGameRank = 2;
            var playerRanks       = new List <PlayerRank>
            {
                new PlayerRank
                {
                    PlayerId = playerOneId,
                    GameRank = playerOneGameRank
                },
                new PlayerRank
                {
                    PlayerId = playerTwoId,
                    GameRank = playerTwoGameRank
                }
            };
            var newlyCompletedPlayedGame = new NewlyCompletedGame
            {
                GameDefinitionId = GameDefinition.Id,
                PlayerRanks      = playerRanks
            };

            var playerOneScorecard = new PointsScorecard
            {
                BasePoints = 1,
                GameDurationBonusPoints = 2,
                GameWeightBonusPoints   = 3
            };
            var playerTwoScorecard = new PointsScorecard
            {
                BasePoints = 4,
                GameDurationBonusPoints = 5,
                GameWeightBonusPoints   = 6
            };
            var expectedPointsDictionary = new Dictionary <int, PointsScorecard>
            {
                { playerOneId, playerOneScorecard },
                { playerTwoId, playerTwoScorecard }
            };

            AutoMocker.Get <IPointsCalculator>().Expect(mock => mock.CalculatePoints(playerRanks, null))
            .Return(expectedPointsDictionary);

            //--Act
            var playerGameResults = AutoMocker.ClassUnderTest.MakePlayerGameResults(newlyCompletedPlayedGame, null, DataContextMock);

            var playerOne = playerGameResults.First(gameResult => gameResult.PlayerId == playerOneId);

            Assert.That(playerOne.GameDurationBonusPoints, Is.EqualTo(playerOneScorecard.GameDurationBonusPoints));
            Assert.That(playerOne.GameWeightBonusPoints, Is.EqualTo(playerOneScorecard.GameWeightBonusPoints));
            Assert.That(playerOne.NemeStatsPointsAwarded, Is.EqualTo(playerOneScorecard.BasePoints));

            var playerTwo = playerGameResults.First(gameResult => gameResult.PlayerId == playerTwoId);

            Assert.That(playerTwo.GameDurationBonusPoints, Is.EqualTo(playerTwoScorecard.GameDurationBonusPoints));
            Assert.That(playerTwo.GameWeightBonusPoints, Is.EqualTo(playerTwoScorecard.GameWeightBonusPoints));
            Assert.That(playerTwo.NemeStatsPointsAwarded, Is.EqualTo(playerTwoScorecard.BasePoints));
        }
        public void ItSetsNemePointsForEachPlayerGameResult()
        {
            var playerOneId       = 1;
            var playerTwoId       = 2;
            var playerOneGameRank = 1;
            var playerTwoGameRank = 2;
            var playerRanks       = new List <PlayerRank>
            {
                new PlayerRank
                {
                    PlayerId = playerOneId,
                    GameRank = playerOneGameRank
                },
                new PlayerRank
                {
                    PlayerId = playerTwoId,
                    GameRank = playerTwoGameRank
                }
            };

            gameDefinition.BoardGameGeekGameDefinitionId = 11;
            var newlyCompletedGame = new NewlyCompletedGame
            {
                GameDefinitionId = gameDefinition.Id,
                PlayerRanks      = playerRanks
            };
            var expectedBoardGameGeekGameDefinition = new BoardGameGeekGameDefinition();

            autoMocker.Get <IDataContext>()
            .Expect(mock => mock.FindById <BoardGameGeekGameDefinition>(gameDefinition.BoardGameGeekGameDefinitionId))
            .Return(expectedBoardGameGeekGameDefinition);

            var playerOneScorecard = new PointsScorecard
            {
                BasePoints = 1,
                GameDurationBonusPoints = 2,
                GameWeightBonusPoints   = 3
            };
            var playerTwoScorecard = new PointsScorecard
            {
                BasePoints = 4,
                GameDurationBonusPoints = 5,
                GameWeightBonusPoints   = 6
            };
            var expectedPointsDictionary = new Dictionary <int, PointsScorecard>
            {
                { playerOneId, playerOneScorecard },
                { playerTwoId, playerTwoScorecard }
            };

            autoMocker.Get <IPointsCalculator>().Expect(mock => mock.CalculatePoints(playerRanks, expectedBoardGameGeekGameDefinition))
            .Return(expectedPointsDictionary);

            //--Act
            var playedGame = autoMocker.ClassUnderTest.CreatePlayedGame(newlyCompletedGame, TransactionSource.WebApplication, currentUser);

            var playerOne = playedGame.PlayerGameResults.First(gameResult => gameResult.PlayerId == playerOneId);

            Assert.That(playerOne.GameDurationBonusPoints, Is.EqualTo(playerOneScorecard.GameDurationBonusPoints));
            Assert.That(playerOne.GameWeightBonusPoints, Is.EqualTo(playerOneScorecard.GameWeightBonusPoints));
            Assert.That(playerOne.NemeStatsPointsAwarded, Is.EqualTo(playerOneScorecard.BasePoints));

            var playerTwo = playedGame.PlayerGameResults.First(gameResult => gameResult.PlayerId == playerTwoId);

            Assert.That(playerTwo.GameDurationBonusPoints, Is.EqualTo(playerTwoScorecard.GameDurationBonusPoints));
            Assert.That(playerTwo.GameWeightBonusPoints, Is.EqualTo(playerTwoScorecard.GameWeightBonusPoints));
            Assert.That(playerTwo.NemeStatsPointsAwarded, Is.EqualTo(playerTwoScorecard.BasePoints));
        }