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);
        }
    }
Example #3
0
        public void GetConstructedUri_NoParameters_MatchesExpected()
        {
            var query = new GetLeaderboard();

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/player-leaderboards/csr/{null}/{null}", uri);
        }
        public void GetConstructedUri_NoParameters_MatchesExpected()
        {
            var query = new GetLeaderboard();

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/player-leaderboards/csr/{null}/{null}", uri);
        }
Example #5
0
        public async Task GetLeaderboard_MissingParameters()
        {
            var query = new GetLeaderboard();

            await Global.Session.Query(query);

            Assert.Fail("An exception should have been thrown");
        }
Example #6
0
        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);
        }
Example #8
0
        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 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 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");
        }
Example #14
0
        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);
        }
Example #15
0
        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 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 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 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_MissingParameters()
        {
            var query = new GetLeaderboard();

            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);
        }