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);
        }
Example #2
0
        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);
        }