public void GetPaymentApprovalAndGenerateTransactionMethod_NoInputParams_GeneratesTransaction()
 {
     const int accountId = 12351;
     var sut = new ProcessTransactionService();
     Transaction transaction = sut.GetPaymentApprovalAndGenerateTransaction(accountId);
     Assert.IsTrue(transaction.GrossAmount > 0);
 }
 public void GetPaymentApprovalAndGenerateTransactionMethod_AccountPassedToConstructor_GeneratesApprovalAndTransaction()
 {
     const int accountId = 12351;
     var sut = new ProcessTransactionService(new FakeAccountRepository(), new FakeTransactionsRepository(),
                                             new FakePaymentGateway());
     Transaction transaction = sut.GetPaymentApprovalAndGenerateTransaction(accountId);
     Assert.IsTrue(transaction.GrossAmount > 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);
        }