Skip to content

Commit

Permalink
Update and streamline Settlement-Captures functions (#339)
Browse files Browse the repository at this point in the history
  • Loading branch information
dschierm authored Jan 18, 2024
1 parent a74d1cc commit e48d6d8
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 10 deletions.
5 changes: 3 additions & 2 deletions src/Mollie.Api/Client/Abstract/ISettlementsClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ public interface ISettlementsClient : IDisposable {
Task<ListResponse<RefundResponse>> GetSettlementRefundsListAsync(UrlObjectLink<ListResponse<RefundResponse>> url);
Task<ListResponse<ChargebackResponse>> GetSettlementChargebacksListAsync(string settlementId, string from = null, int? limit = null);
Task<ListResponse<ChargebackResponse>> GetSettlementChargebacksListAsync(UrlObjectLink<ListResponse<ChargebackResponse>> url);
Task<ListResponse<CaptureResponse>> GetSettlementCapturesListAsync(string settlementId, string offset = null, int? count = null);
Task<ListResponse<CaptureResponse>> GetSettlementCapturesListAsync(UrlObjectLink<ListResponse<CaptureResponse>> url);
Task<SettlementResponse> GetSettlementAsync(UrlObjectLink<SettlementResponse> url);
Task<ListResponse<CaptureResponse>> ListSettlementCapturesAsync(string settlementId);
}
}
}
16 changes: 11 additions & 5 deletions src/Mollie.Api/Client/SettlementsClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,19 @@ public async Task<ListResponse<ChargebackResponse>> GetSettlementChargebacksList
return await this.GetAsync(url).ConfigureAwait(false);
}

public async Task<SettlementResponse> GetSettlementAsync(UrlObjectLink<SettlementResponse> url) {
public async Task<ListResponse<CaptureResponse>> GetSettlementCapturesListAsync(string settlementId, string offset = null, int? count = null)
{
this.ValidateRequiredUrlParameter(nameof(settlementId), settlementId);
return await this.GetListAsync<ListResponse<CaptureResponse>>($"settlements/{settlementId}/captures", offset, count).ConfigureAwait(false);
}

public async Task<ListResponse<CaptureResponse>> GetSettlementCapturesListAsync(UrlObjectLink<ListResponse<CaptureResponse>> url)
{
return await this.GetAsync(url).ConfigureAwait(false);
}

public async Task<ListResponse<CaptureResponse>> ListSettlementCapturesAsync(string settlementId) {
this.ValidateRequiredUrlParameter(nameof(settlementId), settlementId);
return await this.GetListAsync<ListResponse<CaptureResponse>>($"settlements/{settlementId}/captures", null, null).ConfigureAwait(false);
public async Task<SettlementResponse> GetSettlementAsync(UrlObjectLink<SettlementResponse> url) {
return await this.GetAsync(url).ConfigureAwait(false);
}
}
}
}
6 changes: 3 additions & 3 deletions tests/Mollie.Tests.Unit/Client/SettlementClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public async Task ListSettlementCaptures_DefaultBehaviour_ResponseIsParsed() {
SettlementsClient settlementsClient = new SettlementsClient("api-key", httpClient);

// When: We make the request
ListResponse<CaptureResponse> listCaptureResponse = await settlementsClient.ListSettlementCapturesAsync(defaultSettlementId);
ListResponse<CaptureResponse> listCaptureResponse = await settlementsClient.GetSettlementCapturesListAsync(defaultSettlementId);

// Then: Response should be parsed
mockHttp.VerifyNoOutstandingExpectation();
Expand Down Expand Up @@ -206,14 +206,14 @@ public async Task GetSettlementChargebacksListAsync_NoSettlementIdIsGiven_Argume
[InlineData("")]
[InlineData(" ")]
[InlineData(null)]
public async Task ListSettlementCapturesAsync_NoSettlementIdIsGiven_ArgumentExceptionIsThrown(string settlementId) {
public async Task GetSettlementCapturesListAsync_NoSettlementIdIsGiven_ArgumentExceptionIsThrown(string settlementId) {
// Arrange
var mockHttp = new MockHttpMessageHandler();
HttpClient httpClient = mockHttp.ToHttpClient();
SettlementsClient settlementsClient = new SettlementsClient("api-key", httpClient);

// When: We send the request
var exception = await Assert.ThrowsAsync<ArgumentException>(async () => await settlementsClient.ListSettlementCapturesAsync(settlementId));
var exception = await Assert.ThrowsAsync<ArgumentException>(async () => await settlementsClient.GetSettlementCapturesListAsync(settlementId));

// Then
exception.Message.Should().Be("Required URL argument 'settlementId' is null or empty");
Expand Down

0 comments on commit e48d6d8

Please sign in to comment.