private static (DateTime startDate, DateTime endDate) GetSearchDateRange(GetTransactionListRequest request)
        {
            var startDate = request.StartDate == null ? DateTime.UnixEpoch : (DateTime)request.StartDate;
            var endDate   = request.EndDate == null ? DateTime.UtcNow : (DateTime)request.EndDate;

            return(startDate, endDate);
        }
        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()));
        }
Exemplo n.º 3
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);
        }
        public void GetDescriptorEndDateNullReturnsNotNull()
        {
            var request = new GetTransactionListRequest()
            {
                StartDate = DateTime.Now,
                EndDate   = null
            };

            var queryContainerDescriptor = _transactionDateRange.GetDescriptor(_queryContainerDescriptor, request);

            queryContainerDescriptor.Should().NotBeNull();
        }
Exemplo n.º 5
0
        public async Task GetTransactionListThrowsIfUseCaseReturnsNull()
        {
            var request = new GetTransactionListRequest();

            _mockGetTransactionListUseCase
            .Setup(x => x.ExecuteAsync(request))
            .Throws(new Exception("Some error"));

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

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

            var objectResult = controllerResponse as BadRequestObjectResult;

            objectResult.Should().NotBeNull();
            objectResult.Value.Should().Be("Some error");
        }
        public async Task <IActionResult> GetTransactionList([FromQuery] GetTransactionListRequest request)
        {
            try
            {
                var transactionSearchResult = await _getTransactionListUseCase.ExecuteAsync(request).ConfigureAwait(false);

                var apiResponse = new APIResponse <GetTransactionListResponse>(transactionSearchResult)
                {
                    Total = transactionSearchResult.Total
                };

                return(Ok(apiResponse));
            }
            catch (Exception e)
            {
                LambdaLogger.Log(e.Message + e.StackTrace);

                return(BadRequest(e.Message));
            }
        }
 public Task <GetTransactionListResponse> GetListAsync(
     GetTransactionListRequest request,
     CancellationToken cancellationToken = default)
 {
     return(_getList.PostAsync(request, cancellationToken));
 }
Exemplo n.º 8
0
 public async Task <GetTransactionListResponse> ExecuteAsync(GetTransactionListRequest getTransactionListRequest)
 {
     return(await _searchGateway.GetListOfTransactions(getTransactionListRequest).ConfigureAwait(false));
 }