Esempio n. 1
0
        public async Task BOC_GetRateAsyncShoudReturn(decimal expectedExchangeRate,
                                                      DateTime requestedRateDate, DateTime expectedRateDate, string currency)
        {
            #region Arrange
            IBankResult expected = new BankResult()
            {
                BankName     = "Bank of Canada",
                HomeCurrency = "CAD",
                ExchangeRate = expectedExchangeRate,
                RateDate     = expectedRateDate
            };
            IBank ibank = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            #endregion

            #region Act
            IBankResult actual = await ibank.GetRateAsync(currency, requestedRateDate);

            #endregion

            #region Assert
            //Assert.Equal(expected, actual);
            Assert.Equal(expected.RateDate, actual.RateDate);
            Assert.Equal(expected.ExchangeRate, actual.ExchangeRate);
            Assert.Equal(expected.BankName, actual.BankName);
            Assert.Equal(expected.HomeCurrency, actual.HomeCurrency);

            #endregion
        }
Esempio n. 2
0
        public async Task Execute(ProcessPaymentInput input)
        {
            if (input is null)
            {
                _paymentOutputPort.BadRequest("input is null");
                return;
            }

            Payment payment = Payment
                              .CreateNewCardPayment
                              (
                input.Card,
                input.Amount,
                input.BeneficiaryAlias
                              )
                              .RaiseEvents();

            BankResult bankResult = await _bankService
                                    .SubmitCardPaymentAsync(payment)
                                    .ConfigureAwait(false);

            if (bankResult.PaymentStatus.Equals(PaymentStatus.Succeed))
            {
                payment
                .Paid()
                .RaiseEvents();
            }


            _paymentOutputPort.OK(bankResult.BuildOutput());
        }
        public async Task RBA_GetRateAsyncShoudReturn()
        {
            DateTime date = new DateTime(2018, 1, 17);

            #region Arrange
            IBankResult expected = new BankResult()
            {
                BankName     = "Reserve Bank of Australia",
                HomeCurrency = "AUD",
                ExchangeRate = 1.2571M,
                RateDate     = date
            };
            #endregion

            #region Act
            IBank       ibank  = BankFactory.GetBank(BankFactory.SupportedBanks.RBA);
            IBankResult actual = await ibank.GetRateAsync("USD", date);

            #endregion

            #region Assert
            //Assert.Equal(expected, actual);
            Assert.Equal(expected.RateDate, actual.RateDate);
            Assert.Equal(expected.ExchangeRate, actual.ExchangeRate);
            Assert.Equal(expected.BankName, actual.BankName);
            Assert.Equal(expected.HomeCurrency, actual.HomeCurrency);
            #endregion
        }
Esempio n. 4
0
 public static PaymentStatusCode ToPaymentStatusCode(this BankResult bankResult)
 {
     return(bankResult switch
     {
         BankResult.Failure => PaymentStatusCode.Failure,
         BankResult.Success => PaymentStatusCode.Success,
         _ => throw new ArgumentOutOfRangeException(nameof(bankResult), bankResult, null)
     });
Esempio n. 5
0
 private ProcessPaymentOutput BuildOutput(BankResult bankResult)
 {
     return(new ProcessPaymentOutput()
     {
         PaymentId = bankResult.PaymentId,
         PaymentStatus = bankResult.PaymentStatus
     });
 }
Esempio n. 6
0
        public BankResult Validate(PrevalidateExpenseReportLineDataContract request)
        {
            //Call: [APP]/0/rest/PrevalidateExpenseReportLine/Validate
            userConnection = UserConnection ?? SystemUserConnection;

            IBank      Bank          = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            BankResult result        = new BankResult();
            string     shortCurrency = FindValueById <string>("Currency", request.CurrencyId, "ShortName");

            System.Threading.Tasks.Task.Run(async() =>
            {
                IBankResult response = await Bank.GetRateAsync(shortCurrency, request.TransactionDate);
                result = (BankResult)response;
            }).Wait();
            return(result);
        }
Esempio n. 7
0
 public PaymentResponse(string guid, BankResult bankResult)
 {
     Guid       = guid;
     BankResult = bankResult;
 }