Braintree.Tests.Integration.TransactionIntegrationTest.Sale_ReturnsSuccessfulResponseWithPartialSettlement C# (CSharp) Method

Sale_ReturnsSuccessfulResponseWithPartialSettlement() private method

        public void Sale_ReturnsSuccessfulResponseWithPartialSettlement()
        {
            var request = new TransactionRequest
            {
                Amount = SandboxValues.TransactionAmount.AUTHORIZE,
                CreditCard = new TransactionCreditCardRequest
                {
                    Number = SandboxValues.CreditCardNumber.MASTER_CARD,
                    ExpirationDate = "05/2009",
                }
            };

            Result<Transaction> authorizationResult = gateway.Transaction.Sale(request);
            Assert.IsTrue(authorizationResult.IsSuccess());
            Transaction authorizedTransaction = authorizationResult.Target;

            Assert.AreEqual(1000.00, authorizedTransaction.Amount);
            Assert.AreEqual(TransactionType.SALE, authorizedTransaction.Type);
            Assert.AreEqual(TransactionStatus.AUTHORIZED, authorizedTransaction.Status);
            Assert.IsNotNull(authorizedTransaction.ProcessorAuthorizationCode);

            var partialSettlementResult1 = gateway.Transaction.SubmitForPartialSettlement(authorizedTransaction.Id, 400);
            var partialSettlementTransaction1 = partialSettlementResult1.Target;
            Assert.AreEqual(400.00, partialSettlementTransaction1.Amount);
            Assert.AreEqual(TransactionType.SALE, partialSettlementTransaction1.Type);
            Assert.AreEqual(TransactionStatus.SUBMITTED_FOR_SETTLEMENT, partialSettlementTransaction1.Status);
            Assert.AreEqual(authorizedTransaction.Id, partialSettlementTransaction1.AuthorizedTransactionId);

            var refreshedAuthorizedTransaction = gateway.Transaction.Find(authorizedTransaction.Id);
            Assert.AreEqual(TransactionStatus.SETTLEMENT_PENDING, refreshedAuthorizedTransaction.Status);
            var partialSettlementTransactionIds = new string[] { partialSettlementTransaction1.Id };
            Assert.AreEqual(refreshedAuthorizedTransaction.PartialSettlementTransactionIds, partialSettlementTransactionIds);

            var partialSettlementResult2 = gateway.Transaction.SubmitForPartialSettlement(authorizedTransaction.Id, 600);
            var partialSettlementTransaction2 = partialSettlementResult2.Target;
            Assert.AreEqual(600.00, partialSettlementTransaction2.Amount);
            Assert.AreEqual(TransactionType.SALE, partialSettlementTransaction2.Type);
            Assert.AreEqual(TransactionStatus.SUBMITTED_FOR_SETTLEMENT, partialSettlementTransaction2.Status);

            refreshedAuthorizedTransaction = gateway.Transaction.Find(authorizedTransaction.Id);
            partialSettlementTransactionIds = new string[] { partialSettlementTransaction1.Id, partialSettlementTransaction2.Id };
            CollectionAssert.AreEquivalent(refreshedAuthorizedTransaction.PartialSettlementTransactionIds, partialSettlementTransactionIds);
        }
TransactionIntegrationTest