示例#1
0
        public void Uri_MatchesExpected(string gamertag, Enumeration.Halo5.UserGeneratedContentSort sort, int skip, int take)
        {
            var query = new ListGameVariants(gamertag);

            Assert.AreEqual($"https://www.haloapi.com/ugc/h5/players/{gamertag}/gamevariants", query.Uri);

            query.SortBy(sort);

            Assert.AreEqual($"https://www.haloapi.com/ugc/h5/players/{gamertag}/gamevariants?sort={sort}", query.Uri);

            query.OrderByAscending();

            Assert.AreEqual($"https://www.haloapi.com/ugc/h5/players/{gamertag}/gamevariants?sort={sort}&order=asc", query.Uri);

            query.OrderByDescending();

            Assert.AreEqual($"https://www.haloapi.com/ugc/h5/players/{gamertag}/gamevariants?sort={sort}&order=desc", query.Uri);

            query.Skip(skip);

            Assert.AreEqual($"https://www.haloapi.com/ugc/h5/players/{gamertag}/gamevariants?sort={sort}&order=desc&start={skip}", query.Uri);

            query.Take(take);

            Assert.AreEqual($"https://www.haloapi.com/ugc/h5/players/{gamertag}/gamevariants?sort={sort}&order=desc&start={skip}&count={take}", query.Uri);
        }
示例#2
0
        public static void Validate(this ListGameVariants listGameVariants)
        {
            var validationResult = new ValidationResult();

            if (!listGameVariants.Player.IsValidGamertag())
            {
                validationResult.Messages.Add("ListGameVariants query requires a valid Gamertag (Player) to be set.");
            }

            if (listGameVariants.Parameters.ContainsKey("count"))
            {
                int count;
                var parsed = int.TryParse(listGameVariants.Parameters["count"], out count);

                if (!parsed || count < 1 || count > 100)
                {
                    validationResult.Messages.Add($"ListGameVariants optional parameter 'Take' is invalid: {count}.");
                }
            }

            if (!validationResult.Success)
            {
                throw new ValidationException(validationResult.Messages);
            }
        }
示例#3
0
        public async Task ListGameVariants_InvalidGamertag(string gamertag)
        {
            var query = new ListGameVariants(gamertag);

            await Global.Session.Query(query);

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

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants", uri);
        }
        public async Task ListGameVariants_MissingPlayer()
        {
            var query = new ListGameVariants();

            await Global.Session.Query(query);

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

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants", uri);
        }
        public void GetConstructedUri_OrderByDescending_MatchesExpected()
        {
            var query = new ListGameVariants()
                        .OrderByDescending();

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?order=desc", uri);
        }
        public void GetConstructedUri_Take_MatchesExpected(int take)
        {
            var query = new ListGameVariants()
                        .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?count={take}", uri);
        }
        public void GetConstructedUri_Skip_MatchesExpected(int skip)
        {
            var query = new ListGameVariants()
                        .Skip(skip);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?start={skip}", uri);
        }
        public void GetConstructedUri_OrderByDescending_MatchesExpected()
        {
            var query = new ListGameVariants()
                .OrderByDescending();

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?order=desc", uri);
        }
        public void GetConstructedUri_SortBy_MatchesExpected(Enumeration.UserGeneratedContentSort sort)
        {
            var query = new ListGameVariants()
                .SortBy(sort);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?sort={sort}", uri);
        }
        public void GetConstructedUri_ForPlayer_MatchesExpected(string gamertag)
        {
            var query = new ListGameVariants()
                .ForPlayer(gamertag);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{gamertag}/gamevariants", uri);
        }
        public void GetConstructedUri_SortBy_MatchesExpected(Enumeration.UserGeneratedContentSort sort)
        {
            var query = new ListGameVariants()
                        .SortBy(sort);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?sort={sort}", uri);
        }
示例#14
0
        public async Task ListGameVariants_IsSerializable(string gamertag)
        {
            var query = new ListGameVariants(gamertag)
                        .SkipCache();

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

            SerializationUtility <GameVariantResult> .AssertRoundTripSerializationIsPossible(result);
        }
示例#15
0
        public async Task ListGameVariants_InvalidTake(int take)
        {
            var query = new ListGameVariants("ducain23")
                        .Take(take);

            await Global.Session.Query(query);

            Assert.Fail("An exception should have been thrown");
        }
示例#16
0
        public async Task ListGameVariants_DoesNotThrow(string gamertag)
        {
            var query = new ListGameVariants(gamertag)
                        .SkipCache();

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

            Assert.IsInstanceOf(typeof(GameVariantResult), result);
        }
        public void GetConstructedUri_ForPlayer_MatchesExpected(string gamertag)
        {
            var query = new ListGameVariants()
                        .ForPlayer(gamertag);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{gamertag}/gamevariants", uri);
        }
示例#18
0
        public async Task Query_DoesNotThrow(string gamertag)
        {
            var query = new ListGameVariants(gamertag)
                        .SkipCache();

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(GameVariantResult), result);
            Assert.AreEqual(_gameVariantResult, result);
        }
        public void GetConstructedUri_Complex_MatchesExpected(string gamertag, Enumeration.UserGeneratedContentSort sort, int skip, int take)
        {
            var query = new ListGameVariants()
                        .ForPlayer(gamertag)
                        .SortBy(sort)
                        .OrderByAscending()
                        .Skip(skip)
                        .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{gamertag}/gamevariants?sort={sort}&order=asc&start={skip}&count={take}", uri);
        }
示例#20
0
        public async Task ListGameVariants_SchemaIsValid(string gamertag)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Halo5Config.UserGeneratedContentGameVariantsJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Halo5Config.UserGeneratedContentGameVariantsJsonSchemaPath))
            });

            var query = new ListGameVariants(gamertag)
                        .SkipCache();

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

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }
示例#21
0
        public async Task ListGameVariants_ModelMatchesSchema(string gamertag)
        {
            var schema = JSchema.Parse(File.ReadAllText(Halo5Config.UserGeneratedContentGameVariantsJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Halo5Config.UserGeneratedContentGameVariantsJsonSchemaPath))
            });

            var query = new ListGameVariants(gamertag)
                        .SkipCache();

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

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

            SchemaUtility.AssertSchemaIsValid(schema, jContainer);
        }
        public void GetConstructedUri_Take_MatchesExpected(int take)
        {
            var query = new ListGameVariants()
                .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?count={take}", uri);
        }
        public async Task ListGameVariants_DoesNotThrow(string gamertag)
        {
            var query = new ListGameVariants()
                .ForPlayer(gamertag)
                .SkipCache();

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

            Assert.IsInstanceOf(typeof(GameVariantResult), result);
        }
        public async Task ListGameVariants_SchemaIsValid(string gamertag)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.UserGeneratedContentGameVariantsJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.UserGeneratedContentGameVariantsJsonSchemaPath))
            });

            var query = new ListGameVariants()
                .ForPlayer(gamertag)
                .SkipCache();

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

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }
        public async Task ListGameVariants_ModelMatchesSchema(string gamertag)
        {
            var schema = JSchema.Parse(File.ReadAllText(Config.UserGeneratedContentGameVariantsJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.UserGeneratedContentGameVariantsJsonSchemaPath))
            });

            var query = new ListGameVariants()
                .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);
        }
        public async Task ListGameVariants_IsSerializable(string gamertag)
        {
            var query = new ListGameVariants()
                .ForPlayer(gamertag)
                .SkipCache();

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

            SerializationUtility<GameVariantResult>.AssertRoundTripSerializationIsPossible(result);
        }
        public async Task ListGameVariants_MissingPlayer()
        {
            var query = new ListGameVariants();

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
        public async Task ListGameVariants_InvalidGamertag(string gamertag)
        {
            var query = new ListGameVariants()
                .ForPlayer(gamertag);

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
        public async Task ListGameVariants_InvalidTake(int take)
        {
            var query = new ListGameVariants()
                .ForPlayer("ducain23")
                .Take(take);

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
        public void GetConstructedUri_Skip_MatchesExpected(int skip)
        {
            var query = new ListGameVariants()
                .Skip(skip);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{null}/gamevariants?start={skip}", uri);
        }
        public void GetConstructedUri_Complex_MatchesExpected(string gamertag, Enumeration.UserGeneratedContentSort sort, int skip, int take)
        {
            var query = new ListGameVariants()
                .ForPlayer(gamertag)
                .SortBy(sort)
                .OrderByAscending()
                .Skip(skip)
                .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"ugc/h5/players/{gamertag}/gamevariants?sort={sort}&order=asc&start={skip}&count={take}", uri);
        }