Beispiel #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UpdateRefundCommand" /> class.
 /// </summary>
 /// <param name="refundId">The Refund identifier.</param>
 /// <param name="isApproved">IsApproved status.</param>
 /// <param name="isRejected">IsRejected status.</param>
 /// <param name="Request">The request.</param>
 public UpdateRefundCommand(int refundId, UpdateRefundRequest request, bool isApproved = false, bool isRejected = false)
 {
     RefundId   = refundId;
     Request    = request;
     IsApproved = isApproved;
     IsRejected = isRejected;
 }
        public async Task UpdatesRefundReplacingMetadata()
        {
            // given
            var subject = new RefundsClient(_clientConfiguration);
            var refund  = (await subject.GetPageAsync()).Items.First();
            var now     = DateTime.Now.ToString("yyyyMMdd");

            var request = new UpdateRefundRequest
            {
                Id       = refund.Id,
                Metadata = new Dictionary <string, string>
                {
                    [$"Key-1-{now}"] = $"Value-1-{now}",
                    [$"Key-2-{now}"] = $"Value-2-{now}",
                    [$"Key-3-{now}"] = $"Value-3-{now}",
                },
            };

            // when
            var result = await subject.UpdateAsync(request);

            var actual = result.Item;

            // then
            Assert.That(actual, Is.Not.Null);
            Assert.That(actual.Id, Is.Not.Null.And.EqualTo(refund.Id));
            Assert.That(actual.Amount, Is.Not.Null.And.EqualTo(refund.Amount));
            Assert.That(actual.Currency, Is.Not.Null.And.EqualTo(refund.Currency));
            Assert.That(actual.CreatedAt, Is.Not.Null.And.EqualTo(refund.CreatedAt));
            Assert.That(actual.Links, Is.Not.Null);
            Assert.That(actual.Links.Mandate, Is.Not.Null.And.EqualTo(refund.Links.Mandate));
            Assert.That(actual.Links.Payment, Is.Not.Null.And.EqualTo(refund.Links.Payment));
            Assert.That(actual.Metadata, Is.Not.Null.And.EqualTo(request.Metadata));
            Assert.That(actual.Reference, Is.Not.Null.And.EqualTo(refund.Reference));
        }
        public async Task UpdatesRefundPreservingMetadata()
        {
            // given
            var subject = new RefundsClient(_clientConfiguration);
            var refund  = (await subject.GetPageAsync()).Items.First();

            var request = new UpdateRefundRequest
            {
                Id = refund.Id
            };

            // when
            var result = await subject.UpdateAsync(request);

            var actual = result.Item;

            // then
            Assert.That(actual, Is.Not.Null);
            Assert.That(actual.Id, Is.Not.Null.And.EqualTo(refund.Id));
            Assert.That(actual.Amount, Is.Not.Null.And.EqualTo(refund.Amount));
            Assert.That(actual.Currency, Is.Not.Null.And.EqualTo(refund.Currency));
            Assert.That(actual.CreatedAt, Is.Not.Null.And.EqualTo(refund.CreatedAt));
            Assert.That(actual.Links, Is.Not.Null);
            Assert.That(actual.Links.Mandate, Is.Not.Null.And.EqualTo(refund.Links.Mandate));
            Assert.That(actual.Links.Payment, Is.Not.Null.And.EqualTo(refund.Links.Payment));
            Assert.That(actual.Metadata, Is.Not.Null.And.EqualTo(refund.Metadata));
            Assert.That(actual.Reference, Is.Not.Null.And.EqualTo(refund.Reference));
        }
Beispiel #4
0
        public void UpdateRefundRequestIsNullThrows()
        {
            // given
            var subject = new RefundsClient(_clientConfiguration);

            UpdateRefundRequest request = null;

            // when
            AsyncTestDelegate test = () => subject.UpdateAsync(request);

            // then
            var ex = Assert.ThrowsAsync <ArgumentNullException>(test);

            Assert.That(ex.ParamName, Is.EqualTo(nameof(request)));
        }
Beispiel #5
0
        public async Task CallsUpdateRefundEndpoint()
        {
            // given
            var subject = new RefundsClient(_clientConfiguration);

            var request = new UpdateRefundRequest
            {
                Id = "RF12345678"
            };

            // when
            await subject.UpdateAsync(request);

            // then
            _httpTest
            .ShouldHaveCalled("https://api.gocardless.com/refunds")
            .WithVerb(HttpMethod.Put);
        }
Beispiel #6
0
        public void UpdateRefundRequestIdIsNullOrWhiteSpaceThrows(string id)
        {
            // given
            var subject = new RefundsClient(_clientConfiguration);

            var request = new UpdateRefundRequest
            {
                Id = id
            };

            // when
            AsyncTestDelegate test = () => subject.UpdateAsync(request);

            // then
            var ex = Assert.ThrowsAsync <ArgumentException>(test);

            Assert.That(ex.ParamName, Is.EqualTo(nameof(request.Id)));
        }
Beispiel #7
0
        /// <summary>
        /// Updates the Refund.
        /// </summary>
        /// <param name="details">The details.</param>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> UpdateRefund(RefundIdDetails details, UpdateRefundRequest request)
        {
            try
            {
                var client = httpClientFactory.CreateClient(WalletServiceOperation.serviceName);

                var         param       = JsonConvert.SerializeObject(request);
                HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json");

                var response = await client.PutAsync(servicesConfig.Wallet + WalletServiceOperation.UpdateRefund(details.RefundId, details.IsApproved, details.IsRejected), contentPost);

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'UpdateRefund()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
Beispiel #8
0
        public async Task <IActionResult> UpdateRefund(int refundId, bool IsApproved, bool IsRejected, [FromBody] UpdateRefundRequest request)
        {
            var updateRefundCommand = new UpdateRefundCommand(refundId, request, IsApproved, IsRejected);
            var result = await mediator.Send(updateRefundCommand);

            return(StatusCode((int)result.Code, result.Value));
        }
Beispiel #9
0
        //[Authorize(Roles = "Admin, Vendor")]
        public async Task <IActionResult> UpdateRefund(int refundId, bool IsApproved, bool IsRejected, [FromBody] UpdateRefundRequest request)
        {
            var result = await refundService.UpdateRefund(new RefundIdDetails(refundId, IsApproved, IsRejected), request);

            return(StatusCode((int)result.Code, result.Value));
        }