public async Task SearchUserTest(KnownChains apiName)
        {
            var request = new SearchWithQueryModel("aar");
            var result  = await Gateway[apiName].SearchUser(request, CancellationToken.None);

            Assert.IsTrue(result.IsSuccess, result.Exception?.Message);
        }
Пример #2
0
        private async Task <ErrorBase> LoadNext(string s, CancellationToken ct)
        {
            var request = new SearchWithQueryModel(s.TagToEn())
            {
                Offset = OffsetUrl,
                Limit  = ItemsLimit
            };

            var response = await Api.SearchCategories(request, ct);

            if (response.IsSuccess)
            {
                var tags = response.Result.Results;
                if (tags.Count > 0)
                {
                    lock (Items)
                        Items.AddRange(Items.Count == 0 ? tags : tags.Skip(1));

                    OffsetUrl = tags.Last().Name;
                }

                if (tags.Count < Math.Min(ServerMaxCount, ItemsLimit))
                {
                    IsLastReaded = true;
                }
                NotifySourceChanged(nameof(TryLoadNext), true);
            }
            return(response.Error);
        }
        private async Task <ErrorBase> LoadNextSearchUser(string query, CancellationToken ct)
        {
            var request = new SearchWithQueryModel(query)
            {
                Limit  = ItemsLimit,
                Offset = OffsetUrl,
                Login  = AppSettings.User.Login
            };

            var response = await Api.SearchUser(request, ct);

            if (response.IsSuccess)
            {
                var result = response.Result.Results;
                if (result.Count > 0)
                {
                    lock (Items)
                    {
                        Items.AddRange(Items.Count == 0 ? result : result.Skip(1));
                        CashPresenterManager.Add(Items.Count == 0 ? result : result.Skip(1));
                    }

                    OffsetUrl = result.Last().Author;
                }

                if (result.Count < Math.Min(ServerMaxCount, ItemsLimit))
                {
                    IsLastReaded = true;
                }
                NotifySourceChanged(nameof(TryLoadNextSearchUser), true);
            }
            return(response.Error);
        }
        private void SearchCategoriesTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) SearchCategoriesTest : ");
            StepFinished?.Invoke(sb.ToString());

            var limit = 3;

            var request = new SearchWithQueryModel("go")
            {
                Limit = limit
            };
            var response = _api.SearchCategories(request, CancellationToken.None).Result;

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

            request.Offset = response.Result.Results.Last().Name;
            response       = _api.SearchCategories(request, CancellationToken.None).Result;

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

            sb.AppendLine("pass.");
        }
Пример #5
0
        public async Task SearchCategoriesTest(KnownChains apiName)
        {
            var request = new SearchWithQueryModel("ru");
            var result  = await Gateway[apiName].SearchCategories(request, CancellationToken.None);

            Assert.IsTrue(result.IsSuccess, result.Error?.Message);
        }
        public async Task Categories_Search_Empty_Query(KnownChains apiName)
        {
            var request = new SearchWithQueryModel(" ");

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

            Assert.IsTrue(response.Error.Message.StartsWith(nameof(LocalizationKeys.EmptyCategory)));
        }
        public async Task User_Search_Offset_Not_Exisiting(KnownChains apiName)
        {
            var request = new SearchWithQueryModel("aar")
            {
                Offset = "qweqweqwe"
            };
            var response = await Api[apiName].SearchUser(request, CancellationToken.None);

            Assert.IsTrue(response.Error.Message.Equals("Username used for offset was not found"));
        }
        public async Task User_Search_Short_Query(KnownChains apiName)
        {
            // Arrange
            var request = new SearchWithQueryModel("fo");

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

            // Assert
            Assert.IsTrue(response.Error.Message.Equals("Query should have at least 3 characters"));
        }
        public async Task Categories_Search_Short_Query(KnownChains apiName)
        {
            // Arrange
            var request = new SearchWithQueryModel("f");

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

            // Assert
            Assert.IsTrue(response.Error.Message.StartsWith(nameof(LocalizationKeys.QueryMinLength)));
        }
        public async Task User_Search_Empty_Query(KnownChains apiName)
        {
            // Arrange
            var request = new SearchWithQueryModel(" ");

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

            // Assert
            Assert.IsTrue(response.Error.Message.Equals(nameof(LocalizationKeys.EmptyCategory)));
        }
        public async Task Categories_Search_With_User(KnownChains apiName)
        {
            var request = new SearchWithQueryModel("lif");

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

            AssertResult(response);
            Assert.That(response.Result.Results.Any());
            Assert.That(response.Result.Results, Is.Not.Empty);
            Assert.That(response.Result.Results.First().Name, Is.Not.Empty);
        }
        public async Task Categories_Search_Invalid_Query(KnownChains apiName)
        {
            // Arrange
            var request = new SearchWithQueryModel("qwerqwerqwerqwerqwerqwerqwerqwer");

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

            // Assert
            AssertResult(response);
            Assert.That(response.Result.Results, Is.Empty);
        }
        public async Task Categories_Search_Offset_Not_Exisiting(KnownChains apiName)
        {
            // Arrange
            var request = new SearchWithQueryModel("life")
            {
                Offset = "qweqweqwe"
            };

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

            // Assert
            Assert.That(response.Error.Message.Contains("Category used for offset was not found"));
        }
        public void CancelationTest()
        {
            // Arrange
            // Act
            var ex = Assert.Throws <AggregateException>(() =>
            {
                var request         = new SearchWithQueryModel("aar");
                var cts             = new CancellationTokenSource(TimeSpan.FromMilliseconds(100));
                var operationResult = Api[KnownChains.Steem].SearchUser(request, cts.Token).Result;
            });

            // Assert
            Assert.That(ex.InnerException.Message, Is.EqualTo("A task was canceled."));
        }
        public async Task User_Search(KnownChains apiName)
        {
            // Arrange
            var request = new SearchWithQueryModel("aar");

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

            // Assert
            AssertResult(response);
            Assert.That(response.Result.Results, Is.Not.Empty);
            Assert.That(response.Result.Results, Is.Not.Empty);
            Assert.That(response.Result.Results.First().Author, Is.Not.Empty);
        }
Пример #16
0
        private async Task <ErrorBase> LoadNext(Tuple <string, bool, bool> queryParams, CancellationToken ct)
        {
            if (queryParams.Item2)
            {
                Clear();
            }

            var request = new SearchWithQueryModel(queryParams.Item1.TagToEn())
            {
                Offset = OffsetUrl,
                Limit  = ItemsLimit
            };

            var response = await Api.SearchCategories(request, ct);

            if (response.IsSuccess)
            {
                if (queryParams.Item2)
                {
                    Clear();
                }
                var tags = response.Result.Results;
                if (tags.Count > 0)
                {
                    lock (Items)
                    {
                        Items.AddRange(Items.Count == 0 ? tags : tags.Skip(1));
                    }
                    OffsetUrl = tags.Last().Name;
                }
                else if ((Items.Count == 0 || Items.Count == 1) && queryParams.Item3)
                {
                    lock (Items)
                        Items.Add(new SearchResult()
                        {
                            Name = queryParams.Item1
                        });
                }

                if (tags.Count < Math.Min(ServerMaxCount, ItemsLimit))
                {
                    IsLastReaded = true;
                }
                NotifySourceChanged(nameof(TryLoadNext), true);
            }
            return(response.Error);
        }
        public async Task Categories_Search_Offset_Limit(KnownChains apiName)
        {
            // Arrange
            const int limit   = 5;
            var       request = new SearchWithQueryModel("bit")
            {
                Offset = "bitcoin",
                Limit  = limit
            };

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

            // Assert
            AssertResult(response);
            Assert.That(response.Result.Results.Count, Is.EqualTo(limit));
            Assert.That(response.Result.Results, Is.Not.Empty);
            Assert.That(response.Result.Results.First().Name, Is.EqualTo("bitcoin"));
        }
Пример #18
0
        public async Task <OperationResult <ListResponse <UserFriend> > > SearchUser(SearchWithQueryModel model, CancellationToken token)
        {
            if (!EnableRead)
            {
                return(null);
            }

            var results = Validate(model);

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

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

            AddLoginParameter(parameters, model.Login);
            AddOffsetLimitParameters(parameters, model.Offset, model.Limit);
            parameters.Add("query", model.Query);

            var endpoint = "user/search";

            return(await Gateway.Get <ListResponse <UserFriend> >(GatewayVersion.V1P1, endpoint, parameters, token));
        }
Пример #19
0
        public async Task <OperationResult <ListResponse <UserFriend> > > SearchUser(SearchWithQueryModel model, CancellationToken token)
        {
            if (!EnableRead)
            {
                return(null);
            }

            var results = Validate(model);

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

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

            AddLoginParameter(parameters, model.Login);
            AddOffsetLimitParameters(parameters, model.Offset, model.Limit);
            parameters.Add("query", model.Query);

            var endpoint = $"{BaseUrl}/{GatewayVersion.V1P1}/user/search";

            return(await HttpClient.Get <ListResponse <UserFriend> >(endpoint, parameters, token));
        }
Пример #20
0
        public async Task <OperationResult <ListResponse <SearchResult> > > SearchCategories(SearchWithQueryModel model, CancellationToken token)
        {
            if (!EnableRead)
            {
                return(null);
            }

            var results = Validate(model);

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

            var query = Transliteration.ToEng(model.Query);

            if (query != model.Query)
            {
                query = $"ru--{query}";
            }
            model.Query = query;

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

            AddOffsetLimitParameters(parameters, model.Offset, model.Limit);
            parameters.Add("query", model.Query);
            var endpoint = "categories/search";
            var result   = await Gateway.Get <ListResponse <SearchResult> >(GatewayVersion.V1, endpoint, parameters, token);

            if (result.IsSuccess)
            {
                foreach (var categories in result.Result.Results)
                {
                    categories.Name = Transliteration.ToRus(categories.Name);
                }
            }

            return(result);
        }
Пример #21
0
        public async Task <OperationResult <ListResponse <SearchResult> > > SearchCategories(SearchWithQueryModel model, CancellationToken token)
        {
            if (!EnableRead)
            {
                return(null);
            }

            var results = Validate(model);

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

            var query = Transliteration.ToEng(model.Query);

            if (query != model.Query)
            {
                query = $"ru--{query}";
            }
            model.Query = query;

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

            AddOffsetLimitParameters(parameters, model.Offset, model.Limit);
            parameters.Add("query", model.Query);
            var endpoint = $"{BaseUrl}/{GatewayVersion.V1P1}/categories/search";
            var result   = await HttpClient.Get <ListResponse <SearchResult> >(endpoint, parameters, token);

            if (result.IsSuccess)
            {
                foreach (var categories in result.Result.Results)
                {
                    categories.Name = Transliteration.ToRus(categories.Name);
                }
            }

            return(result);
        }