Skip to content

Commit 4e87745

Browse files
Jose Alberto Hernandezadamsaghy
authored andcommitted
FINERACT-1724: Loan product delinquency bucket should not be mandatory
1 parent 6526e10 commit 4e87745

2 files changed

Lines changed: 44 additions & 2 deletions

File tree

fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,8 @@ public void validateForCreate(final JsonCommand command) {
343343
if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME, element)) {
344344
final Long delinquencyBucketId = this.fromApiJsonHelper.extractLongNamed(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME,
345345
element);
346-
baseDataValidator.reset().parameter(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME).value(delinquencyBucketId).notNull()
347-
.integerGreaterThanZero();
346+
baseDataValidator.reset().parameter(LoanProductConstants.DELINQUENCY_BUCKET_PARAM_NAME).value(delinquencyBucketId)
347+
.ignoreIfNull().integerGreaterThanZero();
348348
}
349349

350350
// grace validation

integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,48 @@ public void testDelinquencyBucketsNameDuplication() {
248248
DelinquencyBucketsHelper.createDelinquencyBucket(requestSpec, response403Spec, jsonBucket);
249249
}
250250

251+
@Test
252+
public void testLoanProductCreationWithAndWithoutDelinquencyBucket() {
253+
// Given
254+
final LoanTransactionHelper loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
255+
256+
ArrayList<Integer> rangeIds = new ArrayList<>();
257+
// First Range
258+
String jsonRange = DelinquencyRangesHelper.getAsJSON(1, 3);
259+
PostDelinquencyRangeResponse delinquencyRangeResponse = DelinquencyRangesHelper.createDelinquencyRange(requestSpec, responseSpec,
260+
jsonRange);
261+
rangeIds.add(delinquencyRangeResponse.getResourceId());
262+
jsonRange = DelinquencyRangesHelper.getAsJSON(4, 60);
263+
264+
GetDelinquencyRangesResponse range = DelinquencyRangesHelper.getDelinquencyRange(requestSpec, responseSpec,
265+
delinquencyRangeResponse.getResourceId());
266+
267+
// Second Range
268+
delinquencyRangeResponse = DelinquencyRangesHelper.createDelinquencyRange(requestSpec, responseSpec, jsonRange);
269+
rangeIds.add(delinquencyRangeResponse.getResourceId());
270+
271+
range = DelinquencyRangesHelper.getDelinquencyRange(requestSpec, responseSpec, delinquencyRangeResponse.getResourceId());
272+
final String classificationExpected = range.getClassification();
273+
log.info("Expected Delinquency Range classification after Disbursement {}", classificationExpected);
274+
275+
String jsonBucket = DelinquencyBucketsHelper.getAsJSON(rangeIds);
276+
PostDelinquencyBucketResponse delinquencyBucketResponse = DelinquencyBucketsHelper.createDelinquencyBucket(requestSpec,
277+
responseSpec, jsonBucket);
278+
assertNotNull(delinquencyBucketResponse);
279+
final GetDelinquencyBucketsResponse delinquencyBucket = DelinquencyBucketsHelper.getDelinquencyBucket(requestSpec, responseSpec,
280+
delinquencyBucketResponse.getResourceId());
281+
282+
// Loan product creation without Delinquency bucket
283+
GetLoanProductsProductIdResponse getLoanProductResponse = createLoanProduct(loanTransactionHelper, null, null);
284+
assertNotNull(getLoanProductResponse);
285+
286+
// Loan product creation with Delinquency bucket
287+
getLoanProductResponse = createLoanProduct(loanTransactionHelper, Math.toIntExact(delinquencyBucket.getId()), null);
288+
assertNotNull(getLoanProductResponse);
289+
log.info("Loan Product Bucket Name: {}", getLoanProductResponse.getDelinquencyBucket().getName());
290+
assertEquals(getLoanProductResponse.getDelinquencyBucket().getName(), delinquencyBucket.getName());
291+
}
292+
251293
@Test
252294
public void testLoanClassificationRealtime() {
253295
try {

0 commit comments

Comments
 (0)