コード例 #1
0
        public async Task LoanPaymentOverviewFeature_Should_Throw_ValidationException_For_Invalid_LoanAmount(int loanAmount)
        {
            // Arrange
            var domainConfiguration = new DomainConfiguration
            {
                MaxAdministrationFee         = 10000,
                AdministrationFeePercentage  = 1,
                AnnualInterestRatePercentage = 5
            };

            var domainConfigurationOptionsMock = new Mock <IOptions <DomainConfiguration> >();

            domainConfigurationOptionsMock.Setup(m => m.Value).Returns(domainConfiguration);

            var handler = new LoanPaymentOverview.QueryHandler(domainConfigurationOptionsMock.Object);

            var query = new LoanPaymentOverview.Query
            {
                LoanAmount            = loanAmount,
                DurationOfLoanInYears = 10
            };

            // Act & Assert
            await Assert.ThrowsAsync <ValidationException>(() => handler.Handle(query, default));
        }
コード例 #2
0
        public async Task LoanPaymentOverviewFeature_Should_Calculate_Values_Properly(DomainConfiguration domainConfiguration, LoanPaymentOverview.Query query, LoanPaymentOverview.Result expectedResult)
        {
            // Arrange
            var domainConfigurationOptionsMock = new Mock <IOptions <DomainConfiguration> >();

            domainConfigurationOptionsMock.Setup(m => m.Value).Returns(domainConfiguration);

            var handler = new LoanPaymentOverview.QueryHandler(domainConfigurationOptionsMock.Object);

            // Act
            var result = await handler.Handle(query, default);

            // Assert
            Assert.Equal(expectedResult.MonthlyPayment, result.MonthlyPayment);
            Assert.Equal(expectedResult.TotalInterest, result.TotalInterest);
            Assert.Equal(expectedResult.AdministrationFee, result.AdministrationFee);
        }