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