示例#1
0
        public PlayerWithNemesisViewModel Build(PlayerWithNemesis playerWithNemesis, ApplicationUser currentUser)
        {
            ValidatePlayerNotNull(playerWithNemesis);

            AddInactivePlayerSuffix(playerWithNemesis);

            PlayerWithNemesisViewModel model = new PlayerWithNemesisViewModel
            {
                PlayerId                  = playerWithNemesis.PlayerId,
                PlayerName                = playerWithNemesis.PlayerName,
                PlayerActive              = playerWithNemesis.PlayerActive,
                PlayerRegistered          = playerWithNemesis.PlayerRegistered,
                UserCanEdit               = (currentUser != null && playerWithNemesis.GamingGroupId == currentUser.CurrentGamingGroupId),
                NemesisPlayerId           = playerWithNemesis.NemesisPlayerId,
                NemesisPlayerName         = playerWithNemesis.NemesisPlayerName,
                PreviousNemesisPlayerId   = playerWithNemesis.PreviousNemesisPlayerId,
                PreviousNemesisPlayerName = playerWithNemesis.PreviousNemesisPlayerName,
                NumberOfPlayedGames       = playerWithNemesis.GamesLost + playerWithNemesis.GamesWon,
                OverallWinPercentage      = WinPercentageCalculator.CalculateWinPercentage(playerWithNemesis.GamesWon, playerWithNemesis.GamesLost),
                TotalPoints               = playerWithNemesis.TotalPoints,
                TotalChampionedGames      = playerWithNemesis.TotalChampionedGames
            };

            return(model);
        }
        public PlayerWithNemesisViewModel Build(PlayerWithNemesis playerWithNemesis, string email,
                                                ApplicationUser currentUser)
        {
            ValidatePlayerNotNull(playerWithNemesis);

            AddInactivePlayerSuffix(playerWithNemesis);

            var totalGamesPlayed = playerWithNemesis.GamesLost + playerWithNemesis.GamesWon;
            var model            = new PlayerWithNemesisViewModel
            {
                PlayerId                   = playerWithNemesis.PlayerId,
                PlayerName                 = playerWithNemesis.PlayerName,
                PlayerActive               = playerWithNemesis.PlayerActive,
                PlayerRegistered           = playerWithNemesis.PlayerRegistered,
                RegisteredUserEmailAddress = email,
                UserCanEdit                = (currentUser != null && playerWithNemesis.GamingGroupId == currentUser.CurrentGamingGroupId),
                NemesisPlayerId            = playerWithNemesis.NemesisPlayerId,
                NemesisPlayerName          = playerWithNemesis.NemesisPlayerName,
                PreviousNemesisPlayerId    = playerWithNemesis.PreviousNemesisPlayerId,
                PreviousNemesisPlayerName  = playerWithNemesis.PreviousNemesisPlayerName,
                NumberOfPlayedGames        = totalGamesPlayed,
                OverallWinPercentage       = WinPercentageCalculator.CalculateWinPercentage(playerWithNemesis.GamesWon, playerWithNemesis.GamesLost),
                NemePointsSummary          = new NemePointsSummaryViewModel(playerWithNemesis.NemePointsSummary),
                TotalChampionedGames       = playerWithNemesis.TotalChampionedGames,
                AveragePointsPerGame       = totalGamesPlayed > 0 ? (float)playerWithNemesis.NemePointsSummary.TotalPoints / (float)totalGamesPlayed : 0,
                AchievementsPerLevel       = playerWithNemesis.AchievementsPerLevel
            };

            return(model);
        }
示例#3
0
        public void TheUserCanNotEditViewModelIfTheyDoNotShareGamingGroups()
        {
            currentUser.CurrentGamingGroupId = -1;
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.False(actualViewModel.UserCanEdit);
        }
示例#4
0
        public void It_Returns_The_Players_In_The_Specific_Gaming_Group_With_The_Specified_Date_Filter()
        {
            //--arrange
            var gamingGroupId   = 1;
            var currentUser     = new ApplicationUser();
            var dateRangeFilter = new BasicDateRangeFilter();
            var expectedResults = new List <PlayerWithNemesis>
            {
                new PlayerWithNemesis(),
                new PlayerWithNemesis()
            };
            var expectedResult1 = new PlayerWithNemesisViewModel();
            var expectedResult2 = new PlayerWithNemesisViewModel();

            autoMocker.Get <IPlayerRetriever>().Expect(mock => mock.GetAllPlayersWithNemesisInfo(gamingGroupId, dateRangeFilter)).Return(expectedResults);
            autoMocker.Get <IPlayerWithNemesisViewModelBuilder>().Expect(mock => mock.Build(expectedResults[0], currentUser)).Return(expectedResult1);
            autoMocker.Get <IPlayerWithNemesisViewModelBuilder>().Expect(mock => mock.Build(expectedResults[1], currentUser)).Return(expectedResult2);

            //--act
            var result = autoMocker.ClassUnderTest.GetGamingGroupPlayers(gamingGroupId, currentUser, dateRangeFilter);

            //--assert
            var viewResult = result as PartialViewResult;

            viewResult.ShouldNotBeNull();
            viewResult.ViewName.ShouldBe(MVC.Player.Views._PlayersPartial);
            var model = viewResult.Model as List <PlayerWithNemesisViewModel>;

            model.ShouldNotBeNull();
            model.Count.ShouldBe(2);
            model[0].ShouldBeSameAs(expectedResult1);
            model[1].ShouldBeSameAs(expectedResult2);
        }
示例#5
0
        public void ItCopiesTheNemePointsSummary()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(playerWithNemesis, null, currentUser);

            var expected = new NemePointsSummaryViewModel(playerWithNemesis.NemePointsSummary);

            Assert.AreEqual(expected, actualViewModel.NemePointsSummary);
        }
示例#6
0
        public void ItCalculatesAveragePoints()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(playerWithNemesis, null, currentUser);

            var avgPoints = (float)playerWithNemesis.NemePointsSummary.TotalPoints /
                            (float)(playerWithNemesis.GamesWon + playerWithNemesis.GamesLost);

            Assert.AreEqual(avgPoints, actualViewModel.AveragePointsPerGame);
        }
示例#7
0
        public void ItAddsAnInactivePlayerSuffixToInactivePlayers()
        {
            playerWithNemesis.PlayerActive = false;
            string expectedPlayerName = playerWithNemesis.PlayerName + " (INACTIVE)";

            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(expectedPlayerName, actualViewModel.PlayerName);
        }
示例#8
0
        public void ItCopiesThePlayerNameForActivePlayers()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(this.playerWithNemesis.PlayerName, actualViewModel.PlayerName);
        }
示例#9
0
        public void ItSetsTheOverallWinPercentage()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(50, actualViewModel.OverallWinPercentage);
        }
示例#10
0
        public void TheUserCanNotEditViewModelIfTheUserIsUnknown()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, null);

            Assert.False(actualViewModel.UserCanEdit);
        }
示例#11
0
        public void ItCopiesThePlayerId()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(this.playerWithNemesis.PlayerId, actualViewModel.PlayerId);
        }
示例#12
0
        public void TheUserCanEditViewModelIfTheyShareGamingGroups()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.True(actualViewModel.UserCanEdit);
        }
示例#13
0
        public void ItCopiesTheNemesisPlayerId()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(playerWithNemesis, null, currentUser);

            Assert.AreEqual(playerWithNemesis.NemesisPlayerId, actualViewModel.NemesisPlayerId);
        }
示例#14
0
        public void TheUserHasChampionBadges()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(this.playerWithNemesis.TotalChampionedGames, actualViewModel.TotalChampionedGames);
        }
示例#15
0
        public void ItCopiesThePlayerActiveFlag()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(playerWithNemesis, null, currentUser);

            Assert.AreEqual(playerWithNemesis.PlayerActive, actualViewModel.PlayerActive);
        }
示例#16
0
        public void ItCopiesThePreviousNemesisPlayerName()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(playerWithNemesis, null, currentUser);

            Assert.AreEqual(playerWithNemesis.PreviousNemesisPlayerName, actualViewModel.PreviousNemesisPlayerName);
        }
示例#17
0
        public void ItCopiesTheNumberOfPlayedGames()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(this.playerWithNemesis.GamesWon + playerWithNemesis.GamesLost, actualViewModel.NumberOfPlayedGames);
        }
示例#18
0
        public void ItSetsThePlayerRegisteredFlagToTrueIfThePlayerHasAnApplicationUserId()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(true, actualViewModel.PlayerRegistered);
        }
示例#19
0
        public void ItCopiesTheTotalPoints()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(this.playerWithNemesis, this.currentUser);

            Assert.AreEqual(this.playerWithNemesis.TotalPoints, actualViewModel.TotalPoints);
        }
示例#20
0
        public void ItCopiesThePlayerRegisteredFlag()
        {
            PlayerWithNemesisViewModel actualViewModel = builder.Build(playerWithNemesis, currentUser);

            Assert.AreEqual(playerWithNemesis.PlayerRegistered, actualViewModel.PlayerRegistered);
        }