Esempio n. 1
0
        public void TransactionsProcessorConvertToBaseRate_test(string code, double rate)
        {
            var processor = new TranasctionsProcessor(new FakeCurrenciesRepo());

            // assert
            processor.ConvertToBaseRate(code).Result.ShouldBe((decimal)rate);
        }
        public void TranasctionsProcessor_ValidateTransactions_test()
        {
            var processor = new TranasctionsProcessor(new FakeCurrenciesRepo());

            // Test good transactions
            processor.ValidateTransactions(transactions).Result.ShouldBe(true);
        }
Esempio n. 3
0
        public void SortTransactionsByDate_test()
        {
            var processor = new TranasctionsProcessor(new FakeCurrenciesRepo());

            var result = processor.SortTransactions(transactions, TransactionSortBy.Date).Result;

            result.First().Currency.ShouldBe("usd");
            result.First().Value.ShouldBe(123.06m);

            result.Last().Currency.ShouldBe("gbp");
            result.Last().Value.ShouldBe(123.06m);
        }
        public void InvalidTranasctionsProcessor_ValidateTransactions_test()
        {
            var processor = new TranasctionsProcessor(new FakeCurrenciesRepo());

            // Add invalid transaction
            transactions.Add(new TransactionLine
            {
                Currency         = "usd",
                Date             = DateTime.Now,
                DestinationAccNo = "dest4567",
                SourceAccNo      = "source4567",
                Value            = -6.15m
            });

            // Test invalid transactions
            processor.ValidateTransactions(transactions).Result.ShouldBe(false);
        }
Esempio n. 5
0
        public async Task <CustomResponse <IEnumerable <TransactionLine> > > Post([FromBody] IEnumerable <TransactionLine> transactions, [FromQuery(Name = "sortby")] BUSINESS_MODEL.TransactionSortBy sortby)
        {
            var result = new CustomResponse <IEnumerable <TransactionLine> >();

            try
            {
                var processor           = new TranasctionsProcessor(this._repo);
                var businessTranactions = transactions.ToBusinessModel().ToList();

                if (await processor.ValidateTransactions(businessTranactions))
                {
                    var sortedTransactions = await processor.SortTransactions(businessTranactions, sortby);

                    result.Data = sortedTransactions.ToWebsiteModel();
                }
                else
                {
                    result.Errors = new List <string> {
                        "Invalid transaction found. Negative transaction value is not allowed"
                    };
                }
            }
            catch (CurrencyNotFountException ex)
            {
                result.Errors = new List <string> {
                    ex.Message
                };
            }
            catch
            {
                // TODO LOG the incident to the propriet log storage for future analysis
                result.Errors = new List <string> {
                    "Ups there was an error in our system. Please try again or later."
                };
            }

            return(await Task.Run(() => {
                return result;
            }));
        }
Esempio n. 6
0
 public void TransactionsProcessorInvalidConvertToBaseRate_test(string code)
 {
     var processor = new TranasctionsProcessor(new FakeCurrenciesRepo());
     // assert
     var result = processor.ConvertToBaseRate(code).Result;
 }
 public void GivenIHaveTransactionsProcessor()
 {
     this.processor = new TranasctionsProcessor(this.repo);
 }