public async Task <GetTransactionListResponse> GetListOfTransactions(GetTransactionListRequest request)
        {
            var searchRequest = new GetTransactionListRequest
            {
                SearchText = request.SearchText,
                Page       = request.Page,
                PageSize   = request.PageSize,
                StartDate  = request.StartDate,
                EndDate    = request.EndDate
            };

            var searchResponse = await _elasticSearchWrapper.Search <QueryableTransaction, GetTransactionListRequest>(searchRequest).ConfigureAwait(false);

            if (searchResponse == null)
            {
                throw new Exception("Cannot get response from ElasticSearch instance");
            }

            if (!searchResponse.IsValid)
            {
                throw new Exception($"Cannot load transactions list. Error: {searchResponse.ServerError}");
            }

            if (searchResponse.Documents == null)
            {
                throw new Exception($"ElasticSearch instance returns no documents. Error: {searchResponse.ServerError}");
            }

            var transactions = searchResponse.Documents.Select(queryableTransaction => queryableTransaction.ToTransaction());

            return(GetTransactionListResponse.Create(searchResponse.Total, transactions.ToResponse()));
        }
Ejemplo n.º 2
0
        public async Task GetTransactionListReturnsOk()
        {
            const int transactionsCount = 10;
            var       request           = new GetTransactionListRequest();
            var       response          = GetTransactionListResponse.Create(transactionsCount, new List <TransactionResponse>());

            _mockGetTransactionListUseCase
            .Setup(x => x.ExecuteAsync(request))
            .ReturnsAsync(response);

            var controllerResponse = await _classUnderTest.GetTransactionList(request).ConfigureAwait(false);

            _mockGetTransactionListUseCase.Verify(x => x.ExecuteAsync(request), Times.Once);

            var okObjectResult = controllerResponse as OkObjectResult;

            okObjectResult.Should().NotBeNull();
            okObjectResult.Value.Should().NotBeNull();

            var apiResponse = okObjectResult.Value as APIResponse <GetTransactionListResponse>;

            apiResponse.Should().NotBeNull();

            apiResponse.Results.Should().BeEquivalentTo(response);
            apiResponse.Total.Should().Be(transactionsCount);
        }