public void Calculate_LoanAmountDue_Should_Return_BadRequest_ForMalformed_Request()
        {
            var serviceCollection     = CreateServiceProvider();
            var loanCalculatorService = serviceCollection.GetRequiredService <ILoanCalculatorService>();
            var controller            = new LoanCalculatorController(loanCalculatorService);

            var actionResult = controller.CalculateLoanAmountDue((CustomerType)4, 100, 1);

            actionResult.Should().BeBadRequestObjectResult().ErrorAs <string>();
        }
        [Fact] public void Calculate_LoanAmountDue_Should_Return_BadRequest_ForNegative_Values()
        {
            var serviceCollection     = CreateServiceProvider();
            var loanCalculatorService = serviceCollection.GetRequiredService <ILoanCalculatorService>();
            var controller            = new LoanCalculatorController(loanCalculatorService);

            var result = controller.CalculateLoanAmountDue(CustomerType.Business, -1, -1);

            result.Should().BeBadRequestObjectResult().ErrorAs <string>();
        }
        [Fact]  public void Calculate_LoanAmountDue_Should_Return_Ok_With_Valid_Payload()
        {
            var serviceCollection     = CreateServiceProvider();
            var loanCalculatorService = serviceCollection.GetRequiredService <ILoanCalculatorService>();
            var controller            = new LoanCalculatorController(loanCalculatorService);

            var actionResult = controller.CalculateLoanAmountDue(CustomerType.Individual, 50001, 1);
            var expected     = new { amountDue = 56376.13m, interest = 6375.13m };

            actionResult.Should().BeOkObjectResult().Value.Should().BeEquivalentTo(expected);
        }