示例#1
0
        public async Task GetPostsByCategoryTest(KnownChains apiName, string category)
        {
            var request = new PostsByCategoryModel(PostType.Top, category);
            var result  = await Gateway[apiName].GetPostsByCategory(request, CancellationToken.None);

            Assert.IsTrue(result.IsSuccess, result.Error?.Message);
        }
        private void GetPostsByCategoryTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) GetPostsByCategoryTest : ");
            StepFinished?.Invoke(sb.ToString());

            var limit   = 3;
            var request = new PostsByCategoryModel(PostType.New, "steepshot")
            {
                ShowNsfw = _user.IsNsfw, ShowLowRated = _user.IsLowRated, Limit = limit
            };
            var response = _api.GetPostsByCategory(request, CancellationToken.None).Result;

            if (IsError1(sb, limit, response, response.Result.Results.Count))
            {
                return;
            }

            request.Offset = response.Result.Results.Last().Url;
            response       = _api.GetPostsByCategory(request, CancellationToken.None).Result;

            if (IsError2(sb, limit, response, request.Offset))
            {
                return;
            }

            sb.AppendLine("pass.");
        }
        public async Task Posts_By_Category_Empty_Name(KnownChains apiName)
        {
            var request = new PostsByCategoryModel(PostType.Top, string.Empty);

            var response = await Api[apiName].GetPostsByCategory(request, CancellationToken.None);

            Assert.That(response.Error.Message.StartsWith(nameof(LocalizationKeys.EmptyCategory)));
        }
        public async Task Posts_By_Category_Invalid_Name(KnownChains apiName)
        {
            var request = new PostsByCategoryModel(PostType.Top, "asdas&^@dsad__sa@@d sd222f_f");

            var response = await Api[apiName].GetPostsByCategory(request, CancellationToken.None);

            Assert.IsTrue(response.Error.Message.StartsWith("<h1>Not Found</h1>"));
        }
        public async Task Posts_By_Category_Not_Existing_Name(KnownChains apiName)
        {
            var request = new PostsByCategoryModel(PostType.Top, "qweqweqweqewqwqweqe");

            var response = await Api[apiName].GetPostsByCategory(request, CancellationToken.None);

            AssertResult(response);
            Assert.That(response.Result.Results, Is.Empty);
        }
        public async Task Posts_By_Category_New(KnownChains apiName)
        {
            var category = "steepshot";
            // Arrange
            var request = new PostsByCategoryModel(PostType.New, category);

            // Act
            var response = await Api[apiName].GetPostsByCategory(request, CancellationToken.None);

            // Assert
            AssertResult(response);
            Assert.That(response.Result.Results, Is.Not.Empty);
            var postsWithoutCategoryInTags       = response.Result.Results.Where(x => !x.Tags.Contains(category));
            var postShouldHaveCategoryInCategory = postsWithoutCategoryInTags.Any(x => !x.Category.Equals(category));

            Assert.That(postShouldHaveCategoryInCategory, Is.False);
        }
        public async Task Posts_By_Category_With_User(KnownChains apiName)
        {
            var category = "steepshot";
            // Arrange
            var user    = Users[apiName];
            var request = new PostsByCategoryModel(PostType.Top, category)
            {
                Login = user.Login
            };

            request.ShowNsfw     = true;
            request.ShowLowRated = true;
            // Act
            var response = await Api[apiName].GetPostsByCategory(request, CancellationToken.None);

            // Assert
            AssertResult(response);
            Assert.That(response.Result.Results, Is.Not.Empty);
        }
        public async Task Posts_By_Category_Offset_Limit(KnownChains apiName)
        {
            var category = "steepshot";
            // Arrange
            var request = new PostsByCategoryModel(PostType.Top, category);
            var posts   = await Api[apiName].GetPostsByCategory(request, CancellationToken.None);

            request.Offset = posts.Result.Results.First().Url;
            request.Limit  = 5;

            // Act
            var response = await Api[apiName].GetPostsByCategory(request, CancellationToken.None);

            // Assert
            AssertResult(response);
            Assert.That(response.Result.Results, Is.Not.Empty);
            Assert.That(response.Result.Results.Where(x => !x.Tags.Contains(category)), Is.Empty);
            Assert.That(response.Result.Results.Count, Is.EqualTo(request.Limit));
            Assert.That(response.Result.Results.First().Url, Is.EqualTo(request.Offset));
        }
示例#9
0
        private async Task <Exception> GetSearchedPosts(CancellationToken ct)
        {
            var request = new PostsByCategoryModel(PostType, Tag.TagToEn())
            {
                Login        = AppSettings.User.Login,
                Limit        = string.IsNullOrEmpty(OffsetUrl) ? ItemsLimit : ItemsLimit + 1,
                Offset       = OffsetUrl,
                ShowNsfw     = AppSettings.User.IsNsfw,
                ShowLowRated = AppSettings.User.IsLowRated
            };

            Exception exception;
            bool      isNeedRepeat;

            do
            {
                var response = await Api.GetPostsByCategory(request, ct);

                isNeedRepeat = ResponseProcessing(response, ItemsLimit, out exception, nameof(TryGetSearchedPosts));
            } while (isNeedRepeat);

            return(exception);
        }
        public async Task <OperationResult <ListResponse <Post> > > GetPostsByCategory(PostsByCategoryModel model, CancellationToken token)
        {
            if (!EnableRead)
            {
                return(null);
            }

            var results = Validate(model);

            if (results.Any())
            {
                return(new OperationResult <ListResponse <Post> >(new ValidationError(string.Join(Environment.NewLine, results.Select(i => i.ErrorMessage)))));
            }

            var parameters = new Dictionary <string, object>();

            AddOffsetLimitParameters(parameters, model.Offset, model.Limit);
            AddLoginParameter(parameters, model.Login);
            AddCensorParameters(parameters, model);

            var endpoint = $"posts/{model.Category}/{model.Type.ToString().ToLowerInvariant()}";

            return(await Gateway.Get <ListResponse <Post> >(GatewayVersion.V1P1, endpoint, parameters, token));
        }
        public async Task <OperationResult <ListResponse <Post> > > GetPostsByCategory(PostsByCategoryModel model, CancellationToken token)
        {
            if (!EnableRead)
            {
                return(null);
            }

            var results = Validate(model);

            if (results != null)
            {
                return(new OperationResult <ListResponse <Post> >(results));
            }

            var parameters = new Dictionary <string, object>();

            AddOffsetLimitParameters(parameters, model.Offset, model.Limit);
            AddLoginParameter(parameters, model.Login);
            AddCensorParameters(parameters, model);

            var endpoint = $"{BaseUrl}/{GatewayVersion.V1P1}/posts/{model.Category}/{model.Type.ToString().ToLowerInvariant()}";

            return(await HttpClient.Get <ListResponse <Post> >(endpoint, parameters, token));
        }