public async void CalculateFeeAsync_ReturnsError_WithErrorResponse() { const string responseBody = @" { ""status"": ""BadRequest"", ""errors"": [ { ""code"": ""ach-fee-error"", ""message"": ""Failed to get fee."", ""exception"": { } } ], ""isError"": true, ""isEmpty"": true }"; var sut = GetTestClient(responseBody, HttpStatusCode.BadRequest); var request = new AchFeeRequest { BankNumber = 5000, CompanyNumber = 3939, Amount = 12.34m }; var actual = await sut.LoanPayApi.CalculateFeeAsync("", request); Assert.True(actual.IsError); Assert.Equal(0m, actual.FeeAmount); Assert.Contains("Failed to get fee.", actual.Error); }
public async Task <FeeResponse> CalculateFeeAsync(string accessToken, AchFeeRequest achFeeRequest, CancellationToken cancellationToken = default) { var requestBody = JsonSerializer.Serialize(achFeeRequest, SerializerSettings); return(await SendFeeRequest(accessToken, requestBody, "fees/ach", cancellationToken) .ConfigureAwait(false)); }
public async void CalculateFeeAsync_ReturnsError_WithFailedHttpStatusCode(HttpStatusCode statusCode, string responseString) { const string responseBody = @""; var sut = GetTestClient(responseBody, statusCode); var request = new AchFeeRequest { BankNumber = 5000, CompanyNumber = 3939, Amount = 12.34m }; var actual = await sut.LoanPayApi.CalculateFeeAsync("", request); Assert.True(actual.IsError); Assert.Equal(0m, actual.FeeAmount); Assert.StartsWith(responseString, actual.Error); }
public async void CalculateFeeAsync_ReturnsSuccessfulFeeResponse_WithSuccessfulRequest() { const string responseBody = @" { ""feeAmount"": 4.65 }"; var sut = GetTestClient(responseBody, HttpStatusCode.OK); var request = new AchFeeRequest { BankNumber = 5000, CompanyNumber = 3939, Amount = 12.34m }; var actual = await sut.LoanPayApi.CalculateFeeAsync("", request); Assert.False(actual.IsError); Assert.Null(actual.Error); Assert.Equal(4.65m, actual.FeeAmount); }
public async void CalculateFeeAsync_ReturnsError_WithMalformedJson() { const string responseBody = @" { ""feeAmount"": 4.65 "; var sut = GetTestClient(responseBody, HttpStatusCode.OK); var request = new AchFeeRequest { BankNumber = 5000, CompanyNumber = 3939, Amount = 12.34m }; var actual = await sut.LoanPayApi.CalculateFeeAsync("", request); Assert.True(actual.IsError); Assert.Equal(0m, actual.FeeAmount); Assert.StartsWith("Could not read the response body", actual.Error); }
public async void CalculateFeeAsync_ReturnsError_WithMissingErrorsField() { const string responseBody = @" { ""status"": ""BadRequest"", ""isError"": true, ""isEmpty"": true }"; var sut = GetTestClient(responseBody, HttpStatusCode.BadRequest); var request = new AchFeeRequest { BankNumber = 5000, CompanyNumber = 3939, Amount = 12.34m }; var actual = await sut.LoanPayApi.CalculateFeeAsync("", request); Assert.True(actual.IsError); Assert.Equal(0m, actual.FeeAmount); Assert.Contains("Could not read the response body.", actual.Error); }