public void ReturnsCorrectResponseWithStatus()
        {
            var transaction = new Transaction
            {
                Code    = "Field",
                Balance = 508.64m,
                Date    = new DateTime(2019, 02, 22, 09, 52, 23, 22)
            };
            var request = new ListTransactionsRequest
            {
                PropertyRef = "testString"
            };

            var generatedAt = new DateTime(2019, 02, 22, 09, 52, 23, 23);

            _mockListTransacionsUsecase.Setup(s =>
                                              s.Execute(It.IsAny <ListTransactionsRequest>()))
            .Returns(new ListTransactionsResponse(new List <Transaction> {
                transaction
            }, request, generatedAt));

            var response = _classUnderTest.GetTransactions(request);
            var json     = JsonConvert.SerializeObject(response.Value);

            Assert.AreEqual(200, response.StatusCode);
            Assert.AreEqual(expectedJSON(), json);
        }
        public bool TryGetTransactions(
            string address,
            string category,
            int numberOfDays,
            out List <TransactionResponse> transactionsInCategory,
            out string errorMessage)
        {
            DateTimeOffset localNowDate  = DateTimeOffset.Now.Date;
            DateTimeOffset localXDaysAgo = localNowDate.AddDays(numberOfDays * -1);

            transactionsInCategory = new List <TransactionResponse>();

            int count = 10;
            int from  = 0;

            DateTimeOffset lastTransactionTime = DateTimeOffset.UtcNow;

            while (lastTransactionTime.LocalDateTime.Date >= localXDaysAgo)
            {
                ListTransactionsRequest listRequest = new ListTransactionsRequest()
                {
                    Account = "*",
                    Count   = count,
                    From    = from
                };

                List <TransactionResponse> allTransactions;
                if (!m_dataConnector.TryPost <List <TransactionResponse> >(listRequest, out allTransactions, out errorMessage))
                {
                    return(false);
                }

                allTransactions.Reverse();

                foreach (TransactionResponse trans in allTransactions)
                {
                    lastTransactionTime = GetTransactionTime(trans.Time);
                    if (trans.Address.Equals(address, StringComparison.CurrentCultureIgnoreCase) &&
                        lastTransactionTime.LocalDateTime.Date >= localXDaysAgo &&
                        trans.Category.Equals(category, StringComparison.InvariantCultureIgnoreCase))
                    {
                        transactionsInCategory.Add(trans);
                    }
                }

                if (allTransactions.Count < count)
                {
                    break;
                }

                from += count;
            }

            errorMessage = null;
            return(true);
        }
        private static ListTransactionsRequest ListTransactionsRequest()
        {
            var faker = new Faker();
            var listTransactionsRequest = new ListTransactionsRequest
            {
                PropertyRef = faker.Random.Hash()
            };

            return(listTransactionsRequest);
        }
Exemple #4
0
        public JsonResult GetTransactions([FromQuery] ListTransactionsRequest request)
        {
            _logger.LogInformation("Transactions requested for PropertyRef: " + request.PropertyRef);
            var usecaseResponce = _listTransactions.Execute(request);

            return(new JsonResult(usecaseResponce)
            {
                StatusCode = 200
            });
        }
Exemple #5
0
        public void ExecuteCallsTransactionGateway()
        {
            var propertyRef = new Faker().Random.Hash();

            var request = new ListTransactionsRequest {
                PropertyRef = propertyRef
            };

            _classUnderTest.Execute(request);

            _transactionsGateway.Verify(gateway => gateway.GetTransactionsByPropertyRef(propertyRef));
        }
        public async Task <IActionResult> List([FromQuery] ListTransactionsRequest request, [FromRoute] int accountId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            var response = await _transactionService.ListAsync(request, accountId);

            if (!response.IsValid)
            {
                return(BadRequest(response.Message));
            }
            return(Ok(response));
        }
        public async Task <ListResponse <TransactionsListItemDto> > ListAsync(ListTransactionsRequest request, int accountId)
        {
            var filter = _mapper.Map <ListTransactionsRequest, TransactionsFilter>(request);
            var paging = _mapper.Map <ListTransactionsRequest, Paging>(request);

            filter.AccountId = accountId;

            var transactions = await _transactionRepository.GetListAsync(filter, null, paging);

            var transactionsCount = await _transactionRepository.CountAsync(filter);

            var transactionsDtosList = _mapper.Map <List <Transaction>, List <TransactionsListItemDto> >(transactions);

            return(new ListResponse <TransactionsListItemDto>(transactionsDtosList, transactionsCount));
        }
Exemple #8
0
        public void ExecuteReturnsResponceUsingGatewayResults()
        {
            var propertyRef = new Faker().Random.Hash();

            var request = new ListTransactionsRequest {
                PropertyRef = propertyRef
            };

            List <Transaction> response = new List <Transaction> {
                new Transaction(), new Transaction()
            };

            _transactionsGateway.Setup(foo => foo.GetTransactionsByPropertyRef(propertyRef)).Returns(response);


            var result = _classUnderTest.Execute(request);

            Assert.AreEqual(response, result.Transactions);
        }
Exemple #9
0
        public void CanGetListOfTransactionsByPropertyReference()
        {
            var propertyRef = new Faker().Random.Hash();
            var request     = new ListTransactionsRequest {
                PropertyRef = propertyRef
            };

            List <Transaction> response = new List <Transaction> {
                new Transaction()
            };

            _transactionsGateway.Setup(foo => foo.GetTransactionsByPropertyRef(propertyRef)).Returns(response);

            var results = _classUnderTest.Execute(request);

            Assert.NotNull(results);
            Assert.IsInstanceOf <ListTransactionsResponse>(results);
            Assert.IsInstanceOf <Transaction>(results.Transactions.First());

            Assert.IsInstanceOf <ListTransactionsRequest>(results.Request);
            Assert.AreEqual(propertyRef, results.Request.PropertyRef);
        }
Exemple #10
0
 /// <summary>
 /// Lists transactions for specific currency. Permission required: List Balances
 /// </summary>
 /// <returns>Array of <typeparamref name="ListTransactionsResult"/></returns>
 public async Task <PagedResult <ListTransactionsResult> > ListTransactionsAsync(ListTransactionsRequest listTransactionsRequest)
 {
     return(await PostAsync <PagedResult <ListTransactionsResult> >("listTransactions", listTransactionsRequest));
 }
Exemple #11
0
        /// <summary>
        /// Begin a new asynchornous ListTransactionsRequest
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public async Task <ListTransactionsResponse> ListTransactionsRequestAsync(ListTransactionsRequest requestData)
        {
            var res = await Requestor.PostStringAsync(Urls.ListTransactionsRequest, JsonHelper.SerializeData(requestData));

            return(JsonConvert.DeserializeObject <ListTransactionsResponse>(res.ResponseJson));
        }
Exemple #12
0
 /// <summary>
 /// Begin a new ListTransactionsRequest
 /// </summary>
 /// <param name="requestData"></param>
 /// <returns></returns>
 public ListTransactionsResponse ListTransactionsRequest(ListTransactionsRequest requestData)
 {
     return(JsonConvert.DeserializeObject <ListTransactionsResponse>(Requestor.PostString(Urls.ListTransactionsRequest, JsonHelper.SerializeData(requestData)).ResponseJson));
 }
        public ListTransactionsResponse Execute(ListTransactionsRequest listTransactionsRequest)
        {
            var results = _transactionsGateway.GetTransactionsByPropertyRef(listTransactionsRequest.PropertyRef);

            return(new ListTransactionsResponse(results, listTransactionsRequest, DateTime.Now));
        }