public void SetProfilePicture_TooFewWins()
        {
            var personalSetting = new PersonalSetting("peter#123");

            var player = PlayerOverallStats.Create("peter#123");

            for (int i = 0; i < 19; i++)
            {
                player.RecordWin(Race.HU, 1, true);
            }

            personalSetting.Players = new List <PlayerOverallStats> {
                player
            };
            SetPictureCommand cmd1 = new SetPictureCommand()
            {
                avatarCategory = AvatarCategory.HU,
                pictureId      = 1
            };

            personalSetting.SetProfilePicture(cmd1);

            SetPictureCommand cmd2 = new SetPictureCommand()
            {
                avatarCategory = AvatarCategory.HU,
                pictureId      = 2
            };
            var profilePicture = personalSetting.SetProfilePicture(cmd2);

            Assert.IsFalse(profilePicture);
            Assert.AreEqual(AvatarCategory.HU, personalSetting.ProfilePicture.Race);
            Assert.AreEqual(1, personalSetting.ProfilePicture.PictureId);
        }
예제 #2
0
 public static Rank CreateUnrankedResponse(this PlayerOverallStats stats)
 {
     return(new Rank(
                new List <string> {
         stats.BattleTag
     },
                0,
                0,
                0,
                null,
                GateWay.Undefined,
                GameMode.Undefined,
                0
                )
     {
         Players = new List <PlayerOverview>
         {
             PlayerOverview.Create(new List <PlayerId>
             {
                 new PlayerId
                 {
                     BattleTag = stats.BattleTag,
                     Name = stats.Name
                 }
             }, GateWay.Undefined, GameMode.Undefined, 0, null)
         }
     });
 }
        public async Task LoadAndSave()
        {
            var playerRepository = new PlayerRepository(MongoClient);

            var player = PlayerOverallStats.Create("peter#123");
            await playerRepository.UpsertPlayer(player);

            var playerLoaded = await playerRepository.LoadPlayerProfile(player.BattleTag);

            Assert.AreEqual(player.BattleTag, playerLoaded.BattleTag);
        }
예제 #4
0
        public async Task ReturnRanks_WhenPlayersHavePersonalSettingsConfigured_MustHaveCorrectPersonalSettings()
        {
            // Arrange
            var rankRepository             = new RankRepository(MongoClient, personalSettingsProvider);
            var playerRepository           = new PlayerRepository(MongoClient);
            var personalSettingsRepository = new PersonalSettingsRepository(MongoClient);
            var clanRepository             = new ClanRepository(MongoClient);
            var queryHandler = new RankQueryHandler(rankRepository, playerRepository, clanRepository);

            var ranks = new List <Rank> {
                new Rank(new List <string> {
                    "peter#123"
                }, 1, 12, 1456, null, GateWay.America, GameMode.GM_1v1, 1)
            };
            await rankRepository.InsertRanks(ranks);

            var player = PlayerOverview.Create(new List <PlayerId> {
                PlayerId.Create("peter#123")
            }, GateWay.America, GameMode.GM_1v1, 1, null);

            player.RecordWin(true, 1234);
            await playerRepository.UpsertPlayerOverview(player);

            var playerStats = new PlayerOverallStats()
            {
                BattleTag = "peter#123",
            };
            await playerRepository.UpsertPlayer(playerStats);

            var settings = new PersonalSetting("peter#123")
            {
                ProfilePicture = new ProfilePicture()
                {
                    Race = AvatarCategory.HU, PictureId = 5
                },
                Country = "BG"
            };
            await personalSettingsRepository.Save(settings);

            // Act
            var playerLoaded = await queryHandler.LoadPlayersOfLeague(1, 1, GateWay.America, GameMode.GM_1v1);

            // Assert
            Assert.AreEqual(1, playerLoaded.Count);

            var playerRank = playerLoaded[0];

            Assert.AreEqual("1_peter#123@10_GM_1v1", playerRank.Players.First().Id);
            Assert.AreEqual(playerRank.PlayersInfo[0].SelectedRace, AvatarCategory.HU);
            Assert.AreEqual(playerRank.PlayersInfo[0].PictureId, 5);
            Assert.AreEqual(playerRank.PlayersInfo[0].Country, "BG");
        }
        public async Task Search_DuplicateNameBug_RefineWithBtag()
        {
            var playerRepository = new PlayerRepository(MongoClient);

            var player  = PlayerOverallStats.Create("ThunderHorn#2481");
            var player2 = PlayerOverallStats.Create("ThunderHorn#21132");
            await playerRepository.UpsertPlayer(player);

            await playerRepository.UpsertPlayer(player2);

            var playerLoaded = await playerRepository.SearchForPlayer("thunderhorn#2481");

            Assert.AreEqual(player.BattleTag, playerLoaded[0].BattleTag);
            Assert.AreEqual(1, playerLoaded.Count);
        }
        public async Task Search()
        {
            var playerRepository = new PlayerRepository(MongoClient);

            var player  = PlayerOverallStats.Create("Peter#123");
            var player2 = PlayerOverallStats.Create("Anderer#123");
            await playerRepository.UpsertPlayer(player);

            await playerRepository.UpsertPlayer(player2);

            var playerLoaded = await playerRepository.SearchForPlayer("ete");

            Assert.AreEqual(player.BattleTag, playerLoaded[0].BattleTag);
            Assert.AreEqual(1, playerLoaded.Count);
        }
예제 #7
0
        public void SetProfilePicture_AllowedPictures()
        {
            var personalSetting = new PersonalSetting("peter#123");

            var player = PlayerOverallStats.Create("peter#123");

            for (int i = 0; i < 20; i++)
            {
                player.RecordWin(Race.HU, 1, true);
            }

            personalSetting.Players = new List <PlayerOverallStats> {
                player
            };
            Assert.AreEqual(2, personalSetting.PickablePictures.Single(r => r.Race == Race.HU).Max);
        }
예제 #8
0
        public async Task RepoLoadWithJoin_NotFoundPlayer()
        {
            var settingsRepo    = new PersonalSettingsRepository(MongoClient);
            var playerRepo      = new PlayerRepository(MongoClient);
            var personalSetting = new PersonalSetting("peter#123@10");

            var player = PlayerOverallStats.Create("peter#123");

            await playerRepo.UpsertPlayer(player);

            await settingsRepo.Save(personalSetting);

            var loaded = await settingsRepo.Load("peter#123@10");

            Assert.AreEqual(0, loaded.RaceWins.GetWinsPerRace(Race.HU));
        }
        public async Task PlayerIdMappedRight()
        {
            var playerRepository = new PlayerRepository(MongoClient);

            var player1 = PlayerOverallStats.Create("peter#123");
            var player2 = PlayerOverallStats.Create("wolf#456");

            await playerRepository.UpsertPlayer(player1);

            await playerRepository.UpsertPlayer(player2);

            var playerLoaded = await playerRepository.LoadPlayerProfile(player2.BattleTag);

            Assert.IsNotNull(playerLoaded);
            Assert.AreEqual(player2.BattleTag, playerLoaded.BattleTag);
        }
        public async Task PlayerMapping()
        {
            var playerRepository = new PlayerRepository(MongoClient);

            var player = PlayerOverallStats.Create("peter#123");

            player.RecordWin(Race.HU, 0, true);
            await playerRepository.UpsertPlayer(player);

            var playerLoaded = await playerRepository.LoadPlayerProfile(player.BattleTag);

            playerLoaded.RecordWin(Race.UD, 0, false);
            await playerRepository.UpsertPlayer(playerLoaded);

            var playerLoadedAgain = await playerRepository.LoadPlayerProfile(player.BattleTag);

            Assert.AreEqual(player.BattleTag, playerLoaded.BattleTag);
            Assert.AreEqual(player.BattleTag, playerLoadedAgain.BattleTag);
        }
예제 #11
0
        public async Task <BlizzardUserInfo> GetUserOrRegister(string bearer)
        {
            var userInfo = await _authenticationService.GetUser(bearer);

            if (userInfo == null)
            {
                return(null);
            }

            var battleTag = userInfo.battletag;
            var profile   = await _playerRepository.LoadPlayerProfile(battleTag);

            if (profile == null)
            {
                await _playerRepository.UpsertPlayer(PlayerOverallStats.Create(battleTag));
            }

            return(userInfo);
        }
예제 #12
0
        public void SetProfilePicture()
        {
            var personalSetting = new PersonalSetting("peter#123");

            var player = PlayerOverallStats.Create("peter#123");

            for (int i = 0; i < 20; i++)
            {
                player.RecordWin(Race.HU, 1, true);
            }

            personalSetting.Players = new List <PlayerOverallStats> {
                player
            };
            var profilePicture = personalSetting.SetProfilePicture(Race.HU, 2);

            Assert.IsTrue(profilePicture);
            Assert.AreEqual(Race.HU, personalSetting.ProfilePicture.Race);
            Assert.AreEqual(2, personalSetting.ProfilePicture.PictureId);
        }
예제 #13
0
        public async Task RepoLoadWithJoin()
        {
            var settingsRepo    = new PersonalSettingsRepository(MongoClient);
            var playerRepo      = new PlayerRepository(MongoClient);
            var personalSetting = new PersonalSetting("peter#123");

            var player = PlayerOverallStats.Create("peter#123");

            for (int i = 0; i < 20; i++)
            {
                player.RecordWin(Race.HU, 1, true);
            }

            await playerRepo.UpsertPlayer(player);

            await settingsRepo.Save(personalSetting);

            var loaded = await settingsRepo.Load("peter#123");

            Assert.AreEqual(20, loaded.RaceWins.GetWinsPerRace(Race.HU));
        }
예제 #14
0
        public async Task ReturnRanks_ClanGetsResolved()
        {
            // Arrange
            var rankRepository   = new RankRepository(MongoClient);
            var playerRepository = new PlayerRepository(MongoClient);
            var clanRepository   = new ClanRepository(MongoClient);
            var queryHandler     = new RankQueryHandler(rankRepository, playerRepository, clanRepository);

            var ranks = new List <Rank> {
                new Rank(new List <string> {
                    "peter#123"
                }, 1, 12, 1456, GateWay.America, GameMode.GM_1v1, 1)
            };
            await rankRepository.InsertRanks(ranks);

            var player = PlayerOverview.Create(new List <PlayerId> {
                PlayerId.Create("peter#123")
            }, GateWay.America, GameMode.GM_1v1, 1);

            player.RecordWin(true, 1234);
            await playerRepository.UpsertPlayerOverview(player);

            var playerStats = new PlayerOverallStats()
            {
                BattleTag = "peter#123",
            };
            await playerRepository.UpsertPlayer(playerStats);

            await clanRepository.UpsertMemberShip(new ClanMembership { BattleTag = "peter#123", ClanId = "W3C" });

            // Act
            var playerLoaded = await queryHandler.LoadPlayersOfLeague(1, 1, GateWay.America, GameMode.GM_1v1);

            // Assert
            Assert.AreEqual(1, playerLoaded.Count);

            var playerRank = playerLoaded[0];

            Assert.AreEqual("W3C", playerRank.PlayersInfo.Single().ClanId);
        }
예제 #15
0
        public async Task ReturnRanks_WhenPlayersDoNotHavePersonalSettingsConfigured_MustHaveNotThrowError()
        {
            // Arrange
            var rankRepository   = new RankRepository(MongoClient);
            var playerRepository = new PlayerRepository(MongoClient);
            var clanRepository   = new ClanRepository(MongoClient);
            var queryHandler     = new RankQueryHandler(rankRepository, playerRepository, clanRepository);

            var ranks = new List <Rank> {
                new Rank(new List <string> {
                    "peter#123"
                }, 1, 12, 1456, GateWay.America, GameMode.GM_1v1, 1)
            };
            await rankRepository.InsertRanks(ranks);

            var player = PlayerOverview.Create(new List <PlayerId> {
                PlayerId.Create("peter#123")
            }, GateWay.America, GameMode.GM_1v1, 1);

            player.RecordWin(true, 1234);
            await playerRepository.UpsertPlayerOverview(player);

            var playerStats = new PlayerOverallStats()
            {
                BattleTag = "peter#123",
            };
            await playerRepository.UpsertPlayer(playerStats);

            // Act
            var playerLoaded = await queryHandler.LoadPlayersOfLeague(1, 1, GateWay.America, GameMode.GM_1v1);

            // Assert
            Assert.AreEqual(1, playerLoaded.Count);

            var playerRank = playerLoaded[0];

            Assert.AreEqual("1_peter#123@10_GM_1v1", playerRank.Players.First().Id);
        }
예제 #16
0
        public async Task SetPictureWhenSettingsAreNotThere()
        {
            var personalSettingsRepository = new PersonalSettingsRepository(MongoClient);
            var playerRepo = new PlayerRepository(MongoClient);
            var personalSettingsCommandHandler = new PersonalSettingsCommandHandler(personalSettingsRepository, playerRepo);

            var player = PlayerOverallStats.Create("modmoto#123");

            for (int i = 0; i < 30; i++)
            {
                player.RecordWin(Race.NE, 1, true);
            }

            await playerRepo.UpsertPlayer(player);

            var result = await personalSettingsCommandHandler.UpdatePicture("modmoto#123",
                                                                            new SetPictureCommand { Race = Race.NE, PictureId = 2 });

            Assert.IsTrue(result);
            var settings = await personalSettingsRepository.Load("modmoto#123");

            Assert.AreEqual(2, settings.ProfilePicture.PictureId);
        }
예제 #17
0
 public PlayerMapsStatisticsViewModel(PlayerOverallStats playerOverallStats)
 {
     CurrentPlayerStats = playerOverallStats;
 }