FINERACT-2232: Capitalized income config backend validation
This commit is contained in:
+12
@@ -2692,6 +2692,18 @@ public final class LoanProductDataValidator {
|
||||
.extractBooleanNamed(LoanProductConstants.ENABLE_INCOME_CAPITALIZATION_PARAM_NAME, element);
|
||||
baseDataValidator.reset().parameter(LoanProductConstants.ENABLE_INCOME_CAPITALIZATION_PARAM_NAME)
|
||||
.value(enableIncomeCapitalization).ignoreIfNull().validateForBooleanValue();
|
||||
if (enableIncomeCapitalization) {
|
||||
final String capitalizedIncomeCalculationType = this.fromApiJsonHelper
|
||||
.extractStringNamed(LoanProductConstants.CAPITALIZED_INCOME_CALCULATION_TYPE_PARAM_NAME, element);
|
||||
baseDataValidator.reset().parameter(LoanProductConstants.CAPITALIZED_INCOME_CALCULATION_TYPE_PARAM_NAME)
|
||||
.value(capitalizedIncomeCalculationType).isOneOfEnumValues(LoanCapitalizedIncomeCalculationType.class)
|
||||
.cantBeBlankWhenParameterProvidedIs(LoanProductConstants.ENABLE_INCOME_CAPITALIZATION_PARAM_NAME, true);
|
||||
final String capitalizedIncomeStrategy = this.fromApiJsonHelper
|
||||
.extractStringNamed(LoanProductConstants.CAPITALIZED_INCOME_STRATEGY_PARAM_NAME, element);
|
||||
baseDataValidator.reset().parameter(LoanProductConstants.CAPITALIZED_INCOME_STRATEGY_PARAM_NAME)
|
||||
.value(capitalizedIncomeStrategy).isOneOfEnumValues(LoanCapitalizedIncomeStrategy.class)
|
||||
.cantBeBlankWhenParameterProvidedIs(LoanProductConstants.ENABLE_INCOME_CAPITALIZATION_PARAM_NAME, true);
|
||||
}
|
||||
} else if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.ENABLE_INCOME_CAPITALIZATION_PARAM_NAME, element)) {
|
||||
Boolean enableIncomeCapitalization = this.fromApiJsonHelper
|
||||
.extractBooleanNamed(LoanProductConstants.ENABLE_INCOME_CAPITALIZATION_PARAM_NAME, element);
|
||||
|
||||
+22
-2
@@ -29,10 +29,14 @@ import org.apache.fineract.integrationtests.common.ClientHelper;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeCalculationType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeStrategy;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class LoanProductTest extends BaseLoanIntegrationTest {
|
||||
|
||||
@Nested
|
||||
public class IncomeCapitalizationTest {
|
||||
|
||||
@Test
|
||||
public void testIncomeCapitalizationEnabled() {
|
||||
final PostClientsResponse client = clientHelper.createClient(ClientHelper.defaultClientCreationRequest());
|
||||
@@ -138,10 +142,26 @@ public class LoanProductTest extends BaseLoanIntegrationTest {
|
||||
|
||||
@Test
|
||||
public void testIncomeCapitalizationCumulativeNotSupported() {
|
||||
Assertions.assertThrows(RuntimeException.class,
|
||||
() -> loanProductHelper.createLoanProduct(createOnePeriod30DaysPeriodicAccrualProduct(7.0).enableIncomeCapitalization(true)
|
||||
Assertions
|
||||
.assertThrows(RuntimeException.class,
|
||||
() -> loanProductHelper.createLoanProduct(createOnePeriod30DaysPeriodicAccrualProduct(7.0)
|
||||
.enableIncomeCapitalization(true)
|
||||
.capitalizedIncomeCalculationType(PostLoanProductsRequest.CapitalizedIncomeCalculationTypeEnum.FLAT)
|
||||
.capitalizedIncomeStrategy(PostLoanProductsRequest.CapitalizedIncomeStrategyEnum.EQUAL_AMORTIZATION)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIncomeCapitalizationEnabledCalculationTypeNotProvided() {
|
||||
Assertions.assertThrows(RuntimeException.class,
|
||||
() -> loanProductHelper.createLoanProduct(create4IProgressive().enableIncomeCapitalization(true)
|
||||
.capitalizedIncomeStrategy(PostLoanProductsRequest.CapitalizedIncomeStrategyEnum.EQUAL_AMORTIZATION)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIncomeCapitalizationEnabledStrategyNotProvided() {
|
||||
Assertions.assertThrows(RuntimeException.class,
|
||||
() -> loanProductHelper.createLoanProduct(create4IProgressive().enableIncomeCapitalization(true)
|
||||
.capitalizedIncomeCalculationType(PostLoanProductsRequest.CapitalizedIncomeCalculationTypeEnum.FLAT)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user