public Transaction GetPaymentApprovalAndGenerateTransaction(int accountId)
        {
            var shoppingCart            = _accountRepository.GetCurrentShoppingCart(accountId);
            var paymentGatewayResultDto = _paymentGateway.ApprovePayment(shoppingCart);
            var transaction             = new Transaction
            {
                GrossAmount = paymentGatewayResultDto.ApprovedTotal
            };

            _transactionsRepository.Save(transaction);
            return(transaction);
        }
Exemplo n.º 2
0
        public void GetPaymentApprovalAndGenerateTransactionMethod_AccountPassedToConstructor_GeneratesApprovalAndTransaction()
        {
            // declare constants
            const decimal totalAmount  = 35.27M;
            const int     accountId    = 12354;
            var           shoppingCart = new ShoppingCart
            {
                Id      = 12531515,
                Total   = totalAmount,
                Account = new Account
                {
                    Id             = accountId,
                    CreditCardInfo = new CreditCardInfo()
                }
            };

            var paymentGatewayResultDto = new PaymentGatewayResultDTO
            {
                ApprovedTotal = totalAmount
            };

            var transaction = new Transaction
            {
                GrossAmount = totalAmount
            };

            // set expectations
            Expect.Call(_accountRepository.GetCurrentShoppingCart(accountId)).Return(shoppingCart);
            Expect.Call(_paymentGateway.ApprovePayment(shoppingCart)).Return(paymentGatewayResultDto);
            _transactionsRepository.Save(transaction);

            _mockRepository.ReplayAll();

            var sut = new ProcessTransactionService(_accountRepository, _transactionsRepository, _paymentGateway);

            sut.GetPaymentApprovalAndGenerateTransaction(accountId);

            _mockRepository.VerifyAll();

            Assert.AreEqual(shoppingCart.Total, paymentGatewayResultDto.ApprovedTotal);
            Assert.AreEqual(paymentGatewayResultDto.ApprovedTotal, transaction.GrossAmount);
        }