Example #1
0
        public async Task UpdatePaymentChangeTransactionTimestamp()
        {
            var oldTimeStamp      = DateTime.Now.ToUniversalTime();
            var newTimeStamp      = DateTime.Now.AddDays(-1).ToUniversalTime();
            var refundTransaction = new TransactionDraft
            {
                Amount        = Money.FromDecimal("EUR", TestingUtility.RandomInt(100, 10000)),
                Type          = TransactionType.Refund,
                Timestamp     = oldTimeStamp,
                State         = TransactionState.Initial,
                InteractionId = TestingUtility.RandomString()
            };

            await WithUpdateablePayment(client,
                                        paymentDraft => DefaultPaymentDraftWithTransaction(paymentDraft, refundTransaction),
                                        async payment =>
            {
                Assert.Single(payment.Transactions);
                var action = new ChangeTransactionTimestampUpdateAction
                {
                    TransactionId = payment.Transactions[0].Id,
                    Timestamp     = newTimeStamp
                };

                var updatedPayment = await client
                                     .ExecuteAsync(payment.UpdateById(actions => actions.AddUpdate(action)));

                Assert.Single(updatedPayment.Transactions);
                Assert.NotEqual(oldTimeStamp, updatedPayment.Transactions[0].Timestamp);
                return(updatedPayment);
            });
        }
        public void UpdatePaymentChangeTransactionTimestamp()
        {
            IClient commerceToolsClient = this.paymentsFixture.GetService <IClient>();
            var     payment             = this.paymentsFixture.CreatePaymentWithTransaction();

            Assert.Single(payment.Transactions);

            var refundTransaction = payment.Transactions[0];
            var newTimeStamp      = DateTime.Now.AddDays(-1).ToUniversalTime();

            ChangeTransactionTimestampUpdateAction changeTransactionTimestampUpdateAction = new ChangeTransactionTimestampUpdateAction
            {
                TransactionId = new Guid(refundTransaction.Id),
                Timestamp     = newTimeStamp
            };
            var updateActions = new List <UpdateAction <Payment> > {
                changeTransactionTimestampUpdateAction
            };

            var retrievedPayment = commerceToolsClient
                                   .ExecuteAsync(new UpdateByIdCommand <Payment>(payment.Id, payment.Version, updateActions))
                                   .Result;

            this.paymentsFixture.PaymentsToDelete.Add(retrievedPayment);

            Assert.Single(retrievedPayment.Transactions);
            Assert.True(retrievedPayment.Transactions[0].Timestamp.HasValue);
            Assert.NotEqual(refundTransaction.Timestamp, retrievedPayment.Transactions[0].Timestamp);
        }