public void GetConstructedUri_NoParameters_MatchesExpected() { var query = new GetArenaMatchDetails(); var uri = query.GetConstructedUri(); Assert.AreEqual("stats/h5/arena/matches/", uri); }
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); }
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 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); }
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); }
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); } }
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); }
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); } }
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 <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); }