public void TwoInstances_SameIdInput_AreEqual()
 {
     const int identityId = 13251235;
     var sut1 = new Transaction { Id = identityId };
     var sut2 = new Transaction { Id = identityId };
     Assert.AreEqual(sut1, sut2);
 }
 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;
 }
        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);
        }
 public void Save(Transaction transaction)
 {
     // happy path
     transaction.Id = 1253123;
 }