public void GetConstructedUri_NoParameters_MatchesExpected()
        {
            var query = new GetArenaMatchDetails();

            var uri = query.GetConstructedUri();

            Assert.AreEqual("stats/h5/arena/matches/", uri);
        }
Exemple #2
0
        public void GetConstructedUri_NoParameters_MatchesExpected()
        {
            var query = new GetArenaMatchDetails();

            var uri = query.GetConstructedUri();

            Assert.AreEqual("stats/h5/arena/matches/", uri);
        }
Exemple #3
0
        public async Task GetArenaMatchDetails_MissingGuid()
        {
            var query = new GetArenaMatchDetails();

            await Global.Session.Query(query);

            Assert.Fail("An exception should have been thrown");
        }
        public void GetConstructedUri_NoParamaters_MatchesExpected()
        {
            var query = new GetArenaMatchDetails();

            var uri = query.GetConstructedUri();

            Assert.AreEqual(BaseUri, uri);
        }
Exemple #5
0
        public async Task GetArenaMatchDetails_DoesNotThrow(string guid)
        {
            var query = new GetArenaMatchDetails()
                        .ForMatchId(new Guid(guid));

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(ArenaMatch), result);
        }
Exemple #6
0
        public async Task GetArenaMatchDetails_IsSerializable(string guid)
        {
            var query = new GetArenaMatchDetails()
                        .ForMatchId(new Guid(guid));

            var result = await Global.Session.Query(query);

            SerializationUtility <ArenaMatch> .AssertRoundTripSerializationIsPossible(result);
        }
        public void GetConstructedUri_ForMatchId_MatchesExpected(string guid)
        {
            var query = new GetArenaMatchDetails()
                .ForMatchId(new Guid(guid));

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/arena/matches/{guid}", uri);
        }
Exemple #8
0
        public void GetConstructedUri_ForMatchId_MatchesExpected(string guid)
        {
            var query = new GetArenaMatchDetails()
                        .ForMatchId(new Guid(guid));

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/arena/matches/{guid}", uri);
        }
        public async Task GetArenaMatchDetails_DoesNotThrow(string guid)
        {
            var query = new GetArenaMatchDetails()
                .ForMatchId(new Guid(guid));

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(ArenaMatch), result);
        }
        public async Task Query_DoesNotThrow()
        {
            var query = new GetArenaMatchDetails();

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(ArenaMatch), result);
            Assert.AreEqual(_arenaMatch, result);
        }
        public async Task Query_DoesNotThrow(string guid)
        {
            var query = new GetArenaMatchDetails(new Guid(guid))
                        .SkipCache();

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(ArenaMatch), result);
            Assert.AreEqual(_arenaMatch, result);
        }
        public async Task GetArenaMatchDetails_IsSerializable(string guid)
        {
            var query = new GetArenaMatchDetails()
                .ForMatchId(new Guid(guid));

            var result = await Global.Session.Query(query);

            var serializationUtility = new SerializationUtility<ArenaMatch>();
            serializationUtility.AssertRoundTripSerializationIsPossible(result);
        }
Exemple #13
0
        public async Task Query_DoesNotThrow()
        {
            var query = new GetArenaMatchDetails()
                        .ForMatchId(Guid.Empty);

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(ArenaMatch), result);
            Assert.AreEqual(_arenaMatch, result);
        }
        public static void Validate(this GetArenaMatchDetails getArenaMatchDetails)
        {
            var validationResult = new ValidationResult();

            if (string.IsNullOrWhiteSpace(getArenaMatchDetails.MatchId))
            {
                validationResult.Messages.Add("GetArenaMatchDetails query requires a MatchId to be set.");
            }

            if (!validationResult.Success)
            {
                throw new ValidationException(validationResult.Messages);
            }
        }
Exemple #15
0
        public async Task GetArenaMatchDetails_SchemaIsValid(string guid)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.ArenaMatchJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Config.ArenaMatchJsonSchemaPath))
            });

            var query = new GetArenaMatchDetails()
                        .ForMatchId(new Guid(guid));

            var jArray = await Global.Session.Get <JObject>(query.GetConstructedUri());

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }
Exemple #16
0
        public async Task GetArenaMatchDetails_ModelMatchesSchema(string guid)
        {
            var schema = JSchema.Parse(File.ReadAllText(Config.ArenaMatchJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Config.ArenaMatchJsonSchemaPath))
            });

            var query = new GetArenaMatchDetails()
                        .ForMatchId(new Guid(guid));

            var result = await Global.Session.Query(query);

            var json       = JsonConvert.SerializeObject(result);
            var jContainer = JsonConvert.DeserializeObject <JContainer>(json);

            SchemaUtility.AssertSchemaIsValid(schema, jContainer);
        }
        public async Task GetArenaMatchDetails_MissingGuid()
        {
            var query = new GetArenaMatchDetails();

            try
            {
                await Session.Query(query);
                Assert.Fail("An exception should have been thrown");
            }
            catch (HaloApiException e)
            {
                Assert.AreEqual((int)Enumeration.StatusCode.NotFound, e.HaloApiError.StatusCode);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message);
            }
        }
Exemple #18
0
        public async Task GetArenaMatchDetails_InvalidGuid(string guid)
        {
            var query = new GetArenaMatchDetails()
                        .ForMatchId(new Guid(guid));

            try
            {
                await Global.Session.Query(query);

                Assert.Fail("An exception should have been thrown");
            }
            catch (HaloApiException e)
            {
                Assert.AreEqual((int)Enumeration.StatusCode.NotFound, e.HaloApiError.StatusCode);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message);
            }
        }
        public async Task GetArenaMatchDetails(string gamertag)
        {
            var getMatchesQuery = new GetMatches()
                .InGameMode(Enumeration.GameMode.Arena)
                .ForPlayer(gamertag);

            var matches = await Session.Query(getMatchesQuery);

            Assert.IsTrue(matches.Results.Any());

            foreach (var match in matches.Results)
            {
                var getArenaMatchDetailsQuery = new GetArenaMatchDetails()
                    .ForMatchId(match.Id.MatchId);

                var result = await Session.Query(getArenaMatchDetailsQuery);

                Assert.IsInstanceOf(typeof(ArenaMatch), result);
            }
        }
        public void Uri_MatchesExpected(string guid)
        {
            var query = new GetArenaMatchDetails(new Guid(guid));

            Assert.AreEqual($"https://www.haloapi.com/stats/h5/arena/matches/{guid}", query.Uri);
        }
        public async Task GetArenaMatchDetails_ModelMatchesSchema(string guid)
        {
            var schema = JSchema.Parse(File.ReadAllText(Config.ArenaMatchJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.ArenaMatchJsonSchemaPath))
            });

            var query = new GetArenaMatchDetails()
                .ForMatchId(new Guid(guid))
                .SkipCache();

            var result = await Global.Session.Query(query);

            var json = JsonConvert.SerializeObject(result);
            var jContainer = JsonConvert.DeserializeObject<JContainer>(json);

            SchemaUtility.AssertSchemaIsValid(schema, jContainer);
        }
        public async Task GetArenaMatchDetails_InvalidGuid(string guid)
        {
            var query = new GetArenaMatchDetails()
                .ForMatchId(new Guid(guid))
                .SkipCache();

            try
            {
                await Global.Session.Query(query);
                Assert.Fail("An exception should have been thrown");
            }
            catch (HaloApiException e)
            {
                Assert.AreEqual((int)Enumeration.StatusCode.NotFound, e.HaloApiError.StatusCode);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message);
            }
        }
        public async Task GetArenaMatchDetails_MissingGuid()
        {
            var query = new GetArenaMatchDetails();

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
Exemple #24
0
        public async Task <ArenaMatch> GetArenaMatch(Guid id)
        {
            //ArenaMatchData data = await _db.FindAsync<ArenaMatchData>(id.ToString());

            //if (data == null)
            //{
            var query = new GetArenaMatchDetails().ForMatchId(id);
            var match = await _session.Query(query);

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

            await PopulateBaseMatch(match);

            foreach (var teamStat in match.TeamStats)
            {
                teamStat.TeamColor = await _metadataRepository.GetTeamColor(teamStat.TeamId);
            }

            foreach (var playerStat in match.PlayerStats)
            {
                playerStat.CurrentSpartanRank = await _metadataRepository.GetSpartanRank(playerStat.XpInfo.SpartanRank);

                playerStat.NextSpartanRank = await _metadataRepository.GetSpartanRank(playerStat.XpInfo.SpartanRank + 1);

                if (playerStat.CurrentCsr != null || (playerStat.MeasurementMatchesLeft > 0 && playerStat.MeasurementMatchesLeft < 10))
                {
                    if (playerStat.CurrentCsr == null)
                    {
                        playerStat.CurrentCsr = new CompetitiveSkillRanking
                        {
                            DesignationId = Enumeration.CompetitiveSkillRankingDesignation.Unranked,
                            Tier          = 10 - playerStat.MeasurementMatchesLeft
                        };
                    }
                    var csr = await _metadataRepository.GetCompetitiveSkillRankDesignation((int)playerStat.CurrentCsr.DesignationId);

                    var tier = csr.Tiers.SingleOrDefault(t => t.Id == (playerStat.CurrentCsr.Tier));
                    csr.Tiers = null;
                    playerStat.CurrentCsr.Designation = csr;
                    playerStat.CurrentCsr.CurrentTier = tier;


                    if (playerStat.PreviousCsr == null && playerStat.MeasurementMatchesLeft != 0)
                    {
                        playerStat.PreviousCsr = new CompetitiveSkillRanking
                        {
                            DesignationId = Enumeration.CompetitiveSkillRankingDesignation.Unranked,
                            Tier          =
                                playerStat.MeasurementMatchesLeft != 10
                                        ? 10 - playerStat.MeasurementMatchesLeft - 1
                                        : -1
                        };
                    }
                    if (playerStat.PreviousCsr != null)
                    {
                        csr = await _metadataRepository.GetCompetitiveSkillRankDesignation((int)playerStat.PreviousCsr.DesignationId);

                        tier      = csr.Tiers.SingleOrDefault(t => t.Id == (playerStat.PreviousCsr.Tier));
                        csr.Tiers = null;
                        playerStat.PreviousCsr.Designation = csr;
                        playerStat.PreviousCsr.CurrentTier = tier;
                    }
                }

                await PopulatePlayer(playerStat);
            }

            //data = new ArenaMatchData(id, match);
            //_db.InsertAsync(data);
            return(match);
            //}
            //return data.Deserialize();
        }
        public async Task GetArenaMatchDetails_SchemaIsValid(string guid)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.ArenaMatchJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.ArenaMatchJsonSchemaPath))
            });

            var query = new GetArenaMatchDetails()
                .ForMatchId(new Guid(guid))
                .SkipCache();

            var jArray = await Global.Session.Get<JObject>(query.GetConstructedUri());

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }