public static void Validate(this GetLeaderboard getLeaderboard) { var validationResult = new ValidationResult(); if (string.IsNullOrEmpty(getLeaderboard.SeasonId)) { validationResult.Messages.Add("GetLeaderboard query requires a SeasonId to be set."); } if (string.IsNullOrEmpty(getLeaderboard.PlaylistId)) { validationResult.Messages.Add("GetLeaderboard query requires a PlaylistId to be set."); } if (getLeaderboard.Parameters.ContainsKey("count")) { int count; var parsed = int.TryParse(getLeaderboard.Parameters["count"], out count); if (!parsed || count < 1 || count > 250) { validationResult.Messages.Add($"GetLeaderboard optional parameter 'Take' is invalid: {count}."); } } if (!validationResult.Success) { throw new ValidationException(validationResult.Messages); } }
// Sample JSON for the following script has attached. IEnumerator Start() { id_murid = PlayerPrefs.GetString("id_murid"); string url = "http://gomangrove.com/backend/api/v1/getScoreLeaderboard"; WWW www = new WWW(url); yield return(www); if (www.error == null) { mGetLeaderboard = JsonUtility.FromJson <GetLeaderboard>("{\"getLeaderboard\":" + www.text + "}"); int arrSize = mGetLeaderboard.getLeaderboard.Count; for (int i = 0; i < arrSize; i++) { GameObject button = Instantiate(buttonTemplate) as GameObject; button.SetActive(true); button.GetComponent <Leaderboard_HelperText>().setTextNamaLatihan(mGetLeaderboard.getLeaderboard[i].nama); button.GetComponent <Leaderboard_HelperText>().setTextScore(mGetLeaderboard.getLeaderboard[i].nilai_akhir); button.transform.SetParent(buttonTemplate.transform.parent, false); //string mId_latihan = mGetListNilaiLatihan.getNilaiLatihan[i].idLatihan; //string mJudul = getMateri.getMateri[i].judul_materi; //string mIsi = getMateri.getMateri[i].isi_materi; //button.gameObject.GetComponent<Button>().onClick.AddListener(() => OnButtonClick(mId_latihan)); } } else { Debug.Log("ERROR: " + www.error); } }
public void GetConstructedUri_NoParameters_MatchesExpected() { var query = new GetLeaderboard(); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/player-leaderboards/csr/{null}/{null}", uri); }
public async Task GetLeaderboard_MissingParameters() { var query = new GetLeaderboard(); await Global.Session.Query(query); Assert.Fail("An exception should have been thrown"); }
public void GetConstructedUri_ForPlaylistId_MatchesExpected(string playlistId) { var query = new GetLeaderboard() .ForPlaylistId(new Guid(playlistId)); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/player-leaderboards/csr/{null}/{playlistId}", uri); }
public void GetConstructedUri_Take_MatchesExpected(int take) { var query = new GetLeaderboard() .Take(take); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/player-leaderboards/csr/{null}/{null}?count={take}", uri); }
public async Task GetLeaderboard_IsSerializable(string seasonId, string playlistId) { var query = new GetLeaderboard(new Guid(seasonId), new Guid(playlistId)) .SkipCache(); var result = await Global.Session.Query(query); SerializationUtility <Leaderboard> .AssertRoundTripSerializationIsPossible(result); }
public async Task GetLeaderboard_DoesNotThrow(string seasonId, string playlistId) { var query = new GetLeaderboard(new Guid(seasonId), new Guid(playlistId)) .SkipCache(); var result = await Global.Session.Query(query); Assert.IsInstanceOf(typeof(Leaderboard), result); }
public void Uri_MatchesExpected(string seasonId, string playlistId, int take) { var query = new GetLeaderboard(new Guid(seasonId), new Guid(playlistId)); Assert.AreEqual($"https://www.haloapi.com/stats/h5/player-leaderboards/csr/{seasonId}/{playlistId}", query.Uri); query.Take(take); Assert.AreEqual($"https://www.haloapi.com/stats/h5/player-leaderboards/csr/{seasonId}/{playlistId}?count={take}", query.Uri); }
public async Task GetLeaderboard_MaximumTake(int take) { var query = new GetLeaderboard(Guid.Empty, Guid.Empty) .Take(take) .SkipCache(); await Global.Session.Query(query); Assert.Fail("An exception should have been thrown"); }
public void GetConstructedUri_Complex_MatchesExpected(string seasonId, string playlistId, int take) { var query = new GetLeaderboard() .ForSeasonId(new Guid(seasonId)) .ForPlaylistId(new Guid(playlistId)) .Take(take); var uri = query.GetConstructedUri(); Assert.AreEqual($"stats/h5/player-leaderboards/csr/{seasonId}/{playlistId}?count={take}", uri); }
public async Task Query_DoesNotThrow(string seasonId, string playlistId) { var query = new GetLeaderboard() .ForSeasonId(new Guid(seasonId)) .ForPlaylistId(new Guid(playlistId)) .SkipCache(); var result = await _mockSession.Query(query); Assert.IsInstanceOf(typeof(Leaderboard), result); Assert.AreEqual(_leaderboard, result); }
public async Task GetLeaderboard_SchemaIsValid(string seasonId, string playlistId) { var schema = JSchema.Parse(File.ReadAllText(Halo5Config.LeaderboardJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Halo5Config.LeaderboardJsonSchemaPath)) }); var query = new GetLeaderboard(new Guid(seasonId), new Guid(playlistId)) .SkipCache(); var jArray = await Global.Session.Get <JObject>(query.Uri); SchemaUtility.AssertSchemaIsValid(schema, jArray); }
public async Task GetLeaderboard_ModelMatchesSchema(string seasonId, string playlistId) { var schema = JSchema.Parse(File.ReadAllText(Halo5Config.LeaderboardJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Halo5Config.LeaderboardJsonSchemaPath)) }); var query = new GetLeaderboard(new Guid(seasonId), new Guid(playlistId)) .SkipCache(); 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 GetLeaderboard_SchemaIsValid(string seasonId, string playlistId) { var schema = JSchema.Parse(File.ReadAllText(Config.LeaderboardJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Config.LeaderboardJsonSchemaPath)) }); var query = new GetLeaderboard() .ForSeasonId(new Guid(seasonId)) .ForPlaylistId(new Guid(playlistId)) .SkipCache(); var jArray = await Global.Session.Get<JObject>(query.GetConstructedUri()); SchemaUtility.AssertSchemaIsValid(schema, jArray); }
public async Task GetLeaderboard_MaximumTake(int take) { var query = new GetLeaderboard() .ForSeasonId(Guid.Empty) .ForPlaylistId(Guid.Empty) .Take(take) .SkipCache(); await Global.Session.Query(query); Assert.Fail("An exception should have been thrown"); }
public async Task GetLeaderboard_IsSerializable(string seasonId, string playlistId) { var query = new GetLeaderboard() .ForSeasonId(new Guid(seasonId)) .ForPlaylistId(new Guid(playlistId)) .SkipCache(); var result = await Global.Session.Query(query); SerializationUtility<Leaderboard>.AssertRoundTripSerializationIsPossible(result); }
public async Task GetLeaderboard_ModelMatchesSchema(string seasonId, string playlistId) { var schema = JSchema.Parse(File.ReadAllText(Config.LeaderboardJsonSchemaPath), new JSchemaReaderSettings { Resolver = new JSchemaUrlResolver(), BaseUri = new Uri(Path.GetFullPath(Config.LeaderboardJsonSchemaPath)) }); var query = new GetLeaderboard() .ForSeasonId(new Guid(seasonId)) .ForPlaylistId(new Guid(playlistId)) .SkipCache(); var result = await Global.Session.Query(query); var json = JsonConvert.SerializeObject(result); var jContainer = JsonConvert.DeserializeObject<JObject>(json); SchemaUtility.AssertSchemaIsValid(schema, jContainer); }