Skip to content

Commit 56b506b

Browse files
ruzeynalovadamsaghy
authored andcommitted
FINERACT-2354:added e2e test for validation of re-aging with various interest handling is forbidden on written-off loan
1 parent 3996637 commit 56b506b

File tree

3 files changed

+208
-0
lines changed

3 files changed

+208
-0
lines changed

fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/ErrorMessageHelper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,4 +966,8 @@ public static String reAgeChargedOffLoanFailure() {
966966
public static String reAgeContractTerminatedLoanFailure() {
967967
return "Loan re-aging is not allowed on contract terminated loan.";
968968
}
969+
970+
public static String reAgeWrittenOffLoanFailure() {
971+
return "Loan reaging can only be done on active loans";
972+
}
969973
}

fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanReAgingStepDef.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,42 @@ public void reAgeContractTerminatedLoanFailure(final DataTable table) throws IOE
297297
assertThat(exception.getDeveloperMessage()).contains(ErrorMessageHelper.reAgeContractTerminatedLoanFailure());
298298
}
299299

300+
@Then("Admin fails to create a Loan re-aging transaction with the following data because loan was written-off:")
301+
public void reAgeWrittenOffLoanFailure(final DataTable table) throws IOException {
302+
final PostLoansResponse loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
303+
Assertions.assertNotNull(loanResponse);
304+
final long loanId = loanResponse.getLoanId();
305+
306+
List<List<String>> tableRows = table.asLists();
307+
List<String> headers = tableRows.get(0);
308+
List<String> values = tableRows.get(1);
309+
310+
Map<String, String> rowData = new LinkedHashMap<>();
311+
int columnCount = Math.min(headers.size(), values.size());
312+
for (int i = 0; i < columnCount; i++) {
313+
rowData.put(headers.get(i), values.get(i));
314+
}
315+
316+
int frequencyNumber = Integer.parseInt(resolveValue(rowData, values, 0, "frequencyNumber"));
317+
String frequencyType = resolveValue(rowData, values, 1, "frequencyType");
318+
String startDate = resolveValue(rowData, values, 2, "startDate");
319+
int numberOfInstallments = Integer.parseInt(resolveValue(rowData, values, 3, "numberOfInstallments"));
320+
321+
final PostLoansLoanIdTransactionsRequest reAgingRequest = LoanRequestFactory//
322+
.defaultReAgingRequest()//
323+
.frequencyNumber(frequencyNumber)//
324+
.frequencyType(frequencyType)//
325+
.startDate(startDate)//
326+
.numberOfInstallments(numberOfInstallments);//
327+
328+
applyAdditionalFields(reAgingRequest, rowData, Set.of("frequencyNumber", "frequencyType", "startDate", "numberOfInstallments"));
329+
330+
CallFailedRuntimeException exception = fail(() -> fineractClient.loanTransactions().executeLoanTransaction(loanId, reAgingRequest,
331+
Map.<String, Object>of("command", "reAge")));
332+
assertThat(exception.getStatus()).as(ErrorMessageHelper.dateFailureErrorCodeMsg()).isEqualTo(403);
333+
assertThat(exception.getDeveloperMessage()).contains(ErrorMessageHelper.reAgeWrittenOffLoanFailure());
334+
}
335+
300336
private Map<String, Object> resolveReAgingQueryParams(DataTable table) {
301337
List<String> header = table.asLists().get(0);
302338
List<String> data = table.asLists().get(1);

0 commit comments

Comments
 (0)