public static void Validate(this GetArenaServiceRecord getArenaServiceRecord) { var validationResult = new ValidationResult(); if (getArenaServiceRecord.Parameters.ContainsKey("players")) { var players = getArenaServiceRecord.Parameters["players"].Split(','); foreach (var player in players) { if (!player.IsValidGamertag()) { validationResult.Messages.Add("GetArenaServiceRecord query requires valid Gamertags (Players) to be set."); } } } else { validationResult.Messages.Add("GetArenaServiceRecord query requires a Player to be set."); } if (!validationResult.Success) { throw new ValidationException(validationResult.Messages); } }
public void GetConstructedUri_NoParameters_MatchesExpected() { var query = new GetArenaServiceRecord(); var uri = query.GetConstructedUri(); Assert.AreEqual("stats/h5/servicerecords/arena", uri); }
public async Task GetArenaServiceRecord_MissingPlayer() { var query = new GetArenaServiceRecord(); await Global.Session.Query(query); Assert.Fail("An exception should have been thrown"); }
public async Task GetArenaServiceRecord_InvalidGamertag(string gamertag) { var query = new GetArenaServiceRecord(gamertag); await Global.Session.Query(query); Assert.Fail("An exception should have been thrown"); }
public void GetConstructedUri_ForPlayers_MatchesExpected(string gamertag, string gamertag2) { var query = new GetArenaServiceRecord() .ForPlayers(new List<string> { gamertag, gamertag2}); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/servicerecords/arena?players={gamertag},{gamertag2}", uri); }
public void GetConstructedUri_ForSeasonId_MatchesExpected(string guid) { var query = new GetArenaServiceRecord() .ForSeasonId(new Guid(guid)); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/servicerecords/arena?seasonId={guid}", uri); }
public async Task GetArenaServiceRecord(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag); var result = await Session.Query(query); Assert.IsInstanceOf(typeof (ArenaServiceRecord), result); }
public async Task GetArenaServiceRecord_IsSerializable(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag); var result = await Global.Session.Query(query); SerializationUtility <ArenaServiceRecord> .AssertRoundTripSerializationIsPossible(result); }
public void GetConstructedUri_ForPlayer_MatchesExpected(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/servicerecords/arena?players={gamertag}", uri); }
public async Task GetArenaServiceRecord_DoesNotThrow(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag); var result = await Global.Session.Query(query); Assert.IsInstanceOf(typeof(ArenaServiceRecord), result); }
public async Task GetArenaServiceRecord(string gamertag) { var query = new GetArenaServiceRecord(gamertag) .SkipCache(); var result = await Global.Session.Query(query); Assert.IsInstanceOf(typeof(ArenaServiceRecord), result); }
public async Task Query_DoesNotThrow() { var query = new GetArenaServiceRecord() .ForPlayer("Player"); var result = await _mockSession.Query(query); Assert.IsInstanceOf(typeof(ArenaServiceRecord), result); Assert.AreEqual(_arenaServiceRecord, result); }
public void Uri_MatchesExpected(string gamertag, string guid) { var query = new GetArenaServiceRecord(gamertag); Assert.AreEqual($"https://www.haloapi.com/stats/h5/servicerecords/arena?players={gamertag}", query.Uri); query.ForSeasonId(new Guid(guid)); Assert.AreEqual($"https://www.haloapi.com/stats/h5/servicerecords/arena?players={gamertag}&seasonId={guid}", query.Uri); }
public void GetConstructedUri_Complex_MatchesExpected(string gamertag, string guid) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag) .ForSeasonId(new Guid(guid)); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/servicerecords/arena?players={gamertag}&seasonId={guid}", uri); }
public async Task GetArenaServiceRecord_IsSerializable(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag); var result = await Global.Session.Query(query); var serializationUtility = new SerializationUtility<ArenaServiceRecord>(); serializationUtility.AssertRoundTripSerializationIsPossible(result); }
public async Task <ArenaServiceRecord> GetArenaServiceRecord(string gamertag, Guid?seasonId) { var query = new GetArenaServiceRecord().ForPlayer(gamertag); if (seasonId.HasValue) { query = query.ForSeasonId(seasonId.Value); } var record = await _session.Query(query); return(record); }
public async Task GetArenaServiceRecord_SchemaIsValid(string gamertag) { var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.ArenaServiceRecordJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Config.ArenaServiceRecordJsonSchemaPath)) }); var query = new GetArenaServiceRecord() .ForPlayer(gamertag); var jArray = await Global.Session.Get <JObject>(query.GetConstructedUri()); SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray); }
public async Task GetArenaServiceRecord_ForPlayers() { var gamertags = new List<string> { "Greenskull", "Furiousn00b" }; var query = new GetArenaServiceRecord() .ForPlayers(gamertags); var result = await Session.Query(query); Assert.IsInstanceOf(typeof(ArenaServiceRecord), result); Assert.AreEqual(2, result.Results.Count); }
public async Task GetArenaServiceRecord_ModelMatchesSchema(string gamertag) { var schema = JSchema.Parse(File.ReadAllText(Config.ArenaServiceRecordJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Config.ArenaServiceRecordJsonSchemaPath)) }); var query = new GetArenaServiceRecord() .ForPlayer(gamertag); var result = await Global.Session.Query(query); var json = JsonConvert.SerializeObject(result); var jContainer = JsonConvert.DeserializeObject <JObject>(json); SchemaUtility.AssertSchemaIsValid(schema, jContainer); }
public async Task GetArenaServiceRecord_MissingPlayer() { var query = new GetArenaServiceRecord(); 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 GetArenaServiceRecord_InvalidGamertag(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag); try { await Session.Query(query); Assert.Fail("An exception should have been thrown"); } catch (HaloApiException e) { Assert.AreEqual((int)Enumeration.StatusCode.BadRequest, e.HaloApiError.StatusCode); } catch (System.Exception e) { Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message); } }
public async Task GetArenaServiceRecord_InvalidGamertag(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag); await Global.Session.Query(query); Assert.Fail("An exception should have been thrown"); }
public async Task Query_DoesNotThrow() { var query = new GetArenaServiceRecord() .ForPlayer("Player") .SkipCache(); var result = await _mockSession.Query(query); Assert.IsInstanceOf(typeof(ArenaServiceRecord), result); Assert.AreEqual(_arenaServiceRecord, result); }
public async Task GetArenaServiceRecord_DoesNotThrow(string gamertag) { var query = new GetArenaServiceRecord() .ForPlayer(gamertag) .SkipCache(); var result = await Global.Session.Query(query); Assert.IsInstanceOf(typeof(ArenaServiceRecord), result); }
public async Task GetArenaServiceRecord_SchemaIsValid(string gamertag) { var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.ArenaServiceRecordJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Config.ArenaServiceRecordJsonSchemaPath)) }); var query = new GetArenaServiceRecord() .ForPlayer(gamertag) .SkipCache(); var jArray = await Global.Session.Get<JObject>(query.GetConstructedUri()); SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray); }
public async Task GetArenaServiceRecord_ModelMatchesSchema(string gamertag) { var schema = JSchema.Parse(File.ReadAllText(Config.ArenaServiceRecordJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Config.ArenaServiceRecordJsonSchemaPath)) }); var query = new GetArenaServiceRecord() .ForPlayer(gamertag) .SkipCache(); var result = await Global.Session.Query(query); var json = JsonConvert.SerializeObject(result); var jContainer = JsonConvert.DeserializeObject<JObject>(json); SchemaUtility.AssertSchemaIsValid(schema, jContainer); }