public void CreateRefundRequestIsNullThrows() { // given var subject = new RefundsClient(_clientConfiguration); CreateRefundRequest request = null; // when AsyncTestDelegate test = () => subject.CreateAsync(request); // then var ex = Assert.ThrowsAsync <ArgumentNullException>(test); Assert.That(ex.ParamName, Is.EqualTo(nameof(request))); }
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))); }
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); }
public async Task CallsCreateRefundEndpoint() { // given var subject = new RefundsClient(_clientConfiguration); var request = new CreateRefundRequest { IdempotencyKey = Guid.NewGuid().ToString() }; // when await subject.CreateAsync(request); // then _httpTest .ShouldHaveCalled("https://api.gocardless.com/refunds") .WithHeader("Idempotency-Key") .WithVerb(HttpMethod.Post); }
public async Task CallsGetRefundsEndpointUsingRequest() { // given var subject = new RefundsClient(_clientConfiguration); var request = new GetRefundsRequest { Before = "before test", After = "after test", Limit = 5 }; // when await subject.GetPageAsync(request); // then _httpTest .ShouldHaveCalled("https://api.gocardless.com/refunds?before=before%20test&after=after%20test&limit=5") .WithVerb(HttpMethod.Get); }
public async Task ReturnsRefunds() { // given var subject = new RefundsClient(_clientConfiguration); // when var result = (await subject.GetPageAsync()).Items.ToList(); // then Assert.That(result.Any(), Is.True); Assert.That(result[0], Is.Not.Null); Assert.That(result[0].Id, Is.Not.Null); Assert.That(result[0].Amount, Is.Not.EqualTo(default(int))); Assert.That(result[0].Currency, Is.Not.Null); Assert.That(result[0].CreatedAt, Is.Not.Null.And.Not.EqualTo(default(DateTimeOffset))); Assert.That(result[0].Links, Is.Not.Null); Assert.That(result[0].Links.Mandate, Is.Not.Null); Assert.That(result[0].Links.Payment, Is.Not.Null); Assert.That(result[0].Metadata, Is.Not.Null); Assert.That(result[0].Reference, Is.Not.Null); }
public GoCardlessClient(ClientConfiguration configuration) { _configuration = configuration; BankDetailsLookups = new BankDetailsLookupsClient(configuration); CreditorBankAccounts = new CreditorBankAccountsClient(configuration); Creditors = new CreditorsClient(configuration); CustomerBankAccounts = new CustomerBankAccountsClient(configuration); CustomerNotifications = new CustomerNotificationsClient(configuration); Customers = new CustomersClient(configuration); Events = new EventsClient(configuration); MandateImportEntries = new MandateImportEntriesClient(configuration); MandateImports = new MandateImportsClient(configuration); MandatePdfs = new MandatePdfsClient(configuration); Mandates = new MandatesClient(configuration); Payments = new PaymentsClient(configuration); PayoutItems = new PayoutItemsClient(configuration); Payouts = new PayoutsClient(configuration); RedirectFlows = new RedirectFlowsClient(configuration); Refunds = new RefundsClient(configuration); Subscriptions = new SubscriptionsClient(configuration); }
public async Task CreatesRefund() { // given var payment = await _resourceFactory.CreatePaymentFor(_mandate); var request = new CreateRefundRequest { Amount = 100, Links = new CreateRefundLinks { Payment = payment.Id }, Metadata = new Dictionary <string, string> { ["Key1"] = "Value1", ["Key2"] = "Value2", ["Key3"] = "Value3", }, Reference = "RF123456", TotalAmountConfirmation = 100 }; var subject = new RefundsClient(_clientConfiguration); // when var result = await subject.CreateAsync(request); var actual = result.Item; // then Assert.That(actual, Is.Not.Null); Assert.That(actual.Id, Is.Not.Null); Assert.That(actual.Amount, Is.EqualTo(request.Amount)); Assert.That(actual.CreatedAt, Is.Not.Null.And.Not.EqualTo(default(DateTimeOffset))); Assert.That(actual.Currency, Is.EqualTo(payment.Currency)); Assert.That(actual.Links, Is.Not.Null); Assert.That(actual.Links.Payment, Is.EqualTo(request.Links.Payment)); Assert.That(actual.Metadata, Is.EqualTo(request.Metadata)); Assert.That(actual.Reference, Is.EqualTo(request.Reference)); }
public async Task PagesThroughRefunds() { // given var subject = new RefundsClient(_clientConfiguration); var firstId = (await subject.GetPageAsync()).Items.First().Id; var initialRequest = new GetRefundsRequest { Limit = 1 }; // when var result = await subject .BuildPager() .StartFrom(initialRequest) .AndGetAllAfterAsync(); // then Assert.That(result.Count, Is.GreaterThan(1)); Assert.That(result[0].Id, Is.Not.Null.And.Not.EqualTo(result[1].Id)); Assert.That(result[1].Id, Is.Not.Null.And.Not.EqualTo(result[0].Id)); }
public async Task ReturnsIndividualRefund() { // given var subject = new RefundsClient(_clientConfiguration); var refund = (await subject.GetPageAsync()).Items.First(); // when var result = await subject.ForIdAsync(refund.Id); 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)); }
public async Task CreateRefundRequestIsInvalidThrows() { // given var payment = await _resourceFactory.CreatePaymentFor(_mandate); var request = new CreateRefundRequest { Amount = 100, IdempotencyKey = Guid.NewGuid().ToString(), Links = new CreateRefundLinks { Payment = payment.Id }, Metadata = new Dictionary <string, string> { ["Key1"] = "Value1", ["Key2"] = "Value2", ["Key3"] = "Value3", }, TotalAmountConfirmation = 100 }; var subject = new RefundsClient(_clientConfiguration); // when AsyncTestDelegate test = () => subject.CreateAsync(request); // then var ex = Assert.ThrowsAsync <ValidationFailedException>(test); Assert.That(ex.Code, Is.EqualTo((int)HttpStatusCode.UnprocessableEntity)); Assert.That(ex.DocumentationUrl, Is.Not.Null); Assert.That(ex.Errors?.Any(), Is.True); Assert.That(ex.Message, Is.Not.Null.And.Not.Empty); Assert.That(ex.RawResponse, Is.Not.Null.And.Not.Empty); Assert.That(ex.RequestId, Is.Not.Null.And.Not.Empty); }