This is an automated email from the ASF dual-hosted git repository.
adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new 4e877451c FINERACT-1724: Loan product delinquency bucket should not be
mandatory
4e877451c is described below
commit 4e877451c32621411c4973c3d30c1dda6e104a33
Author: Jose Alberto Hernandez <[email protected]>
AuthorDate: Wed Dec 13 16:47:06 2023 -0600
FINERACT-1724: Loan product delinquency bucket should not be mandatory
---
.../serialization/LoanProductDataValidator.java | 4 +--
.../DelinquencyBucketsIntegrationTest.java | 42 ++++++++++++++++++++++
2 files changed, 44 insertions(+), 2 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java
index e7d99ccc4..7e5035294 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java
@@ -343,8 +343,8 @@ public final class LoanProductDataValidator {
if
(this.fromApiJsonHelper.parameterExists(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME,
element)) {
final Long delinquencyBucketId =
this.fromApiJsonHelper.extractLongNamed(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME,
element);
-
baseDataValidator.reset().parameter(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME).value(delinquencyBucketId).notNull()
- .integerGreaterThanZero();
+
baseDataValidator.reset().parameter(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME).value(delinquencyBucketId)
+ .ignoreIfNull().integerGreaterThanZero();
}
// grace validation
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
index d7ccbf91f..3dd2c5586 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
@@ -248,6 +248,48 @@ public class DelinquencyBucketsIntegrationTest {
DelinquencyBucketsHelper.createDelinquencyBucket(requestSpec,
response403Spec, jsonBucket);
}
+ @Test
+ public void testLoanProductCreationWithAndWithoutDelinquencyBucket() {
+ // Given
+ final LoanTransactionHelper loanTransactionHelper = new
LoanTransactionHelper(this.requestSpec, this.responseSpec);
+
+ ArrayList<Integer> rangeIds = new ArrayList<>();
+ // First Range
+ String jsonRange = DelinquencyRangesHelper.getAsJSON(1, 3);
+ PostDelinquencyRangeResponse delinquencyRangeResponse =
DelinquencyRangesHelper.createDelinquencyRange(requestSpec, responseSpec,
+ jsonRange);
+ rangeIds.add(delinquencyRangeResponse.getResourceId());
+ jsonRange = DelinquencyRangesHelper.getAsJSON(4, 60);
+
+ GetDelinquencyRangesResponse range =
DelinquencyRangesHelper.getDelinquencyRange(requestSpec, responseSpec,
+ delinquencyRangeResponse.getResourceId());
+
+ // Second Range
+ delinquencyRangeResponse =
DelinquencyRangesHelper.createDelinquencyRange(requestSpec, responseSpec,
jsonRange);
+ rangeIds.add(delinquencyRangeResponse.getResourceId());
+
+ range = DelinquencyRangesHelper.getDelinquencyRange(requestSpec,
responseSpec, delinquencyRangeResponse.getResourceId());
+ final String classificationExpected = range.getClassification();
+ log.info("Expected Delinquency Range classification after Disbursement
{}", classificationExpected);
+
+ String jsonBucket = DelinquencyBucketsHelper.getAsJSON(rangeIds);
+ PostDelinquencyBucketResponse delinquencyBucketResponse =
DelinquencyBucketsHelper.createDelinquencyBucket(requestSpec,
+ responseSpec, jsonBucket);
+ assertNotNull(delinquencyBucketResponse);
+ final GetDelinquencyBucketsResponse delinquencyBucket =
DelinquencyBucketsHelper.getDelinquencyBucket(requestSpec, responseSpec,
+ delinquencyBucketResponse.getResourceId());
+
+ // Loan product creation without Delinquency bucket
+ GetLoanProductsProductIdResponse getLoanProductResponse =
createLoanProduct(loanTransactionHelper, null, null);
+ assertNotNull(getLoanProductResponse);
+
+ // Loan product creation with Delinquency bucket
+ getLoanProductResponse = createLoanProduct(loanTransactionHelper,
Math.toIntExact(delinquencyBucket.getId()), null);
+ assertNotNull(getLoanProductResponse);
+ log.info("Loan Product Bucket Name: {}",
getLoanProductResponse.getDelinquencyBucket().getName());
+ assertEquals(getLoanProductResponse.getDelinquencyBucket().getName(),
delinquencyBucket.getName());
+ }
+
@Test
public void testLoanClassificationRealtime() {
try {