Skip to content

Commit 89750ee

Browse files
mariiaKraievskaadamsaghy
authored andcommitted
FINERACT-2017: Improve test apply holidays to loans job
1 parent 7da6d57 commit 89750ee

1 file changed

Lines changed: 45 additions & 19 deletions

File tree

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

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -339,43 +339,69 @@ public void testApplyHolidaysToLoansJobOutcome() throws InterruptedException {
339339

340340
HashMap holidayData = HolidayHelper.getHolidayById(requestSpec, responseSpec, holidayId.toString());
341341
ArrayList<Integer> repaymentsRescheduledDate = (ArrayList<Integer>) holidayData.get("repaymentsRescheduledTo");
342+
Assertions.assertNotNull(repaymentsRescheduledDate);
342343

343344
// Loan Repayment Schedule Before Apply Holidays To Loans
344-
LinkedHashMap repaymentScheduleHashMap = JsonPath.from(loanDetails).get("repaymentSchedule");
345-
ArrayList<LinkedHashMap> periods = (ArrayList<LinkedHashMap>) repaymentScheduleHashMap.get("periods");
346-
347-
for (LinkedHashMap period : periods) {
348-
ArrayList<Integer> fromDate = (ArrayList<Integer>) period.get("fromDate");
349-
if (fromDate != null && Objects.equals(fromDate.get(1), repaymentsRescheduledDate.get(1))) {
350-
Assertions.assertNotEquals(repaymentsRescheduledDate.get(2), fromDate.get(2),
351-
"Verifying Repayment Rescheduled Day before Running Apply Holidays to Loans Scheduler Job");
345+
final LinkedHashMap repaymentScheduleHashMapBeforeHolidaysApply = JsonPath.from(loanDetails).get("repaymentSchedule");
346+
final ArrayList<LinkedHashMap> periodsBeforeHolidaysApply = (ArrayList<LinkedHashMap>) repaymentScheduleHashMapBeforeHolidaysApply
347+
.get("periods");
348+
349+
for (LinkedHashMap period : periodsBeforeHolidaysApply) {
350+
final ArrayList<Integer> fromDate = (ArrayList<Integer>) period.get("fromDate");
351+
if (fromDate != null) {
352+
final Integer fromDateMonth = fromDate.get(1);
353+
final Integer repaymentsRescheduledDateMonth = repaymentsRescheduledDate.get(1);
354+
if (Objects.equals(fromDateMonth, repaymentsRescheduledDateMonth)) {
355+
final Integer repaymentsRescheduledDateDay = repaymentsRescheduledDate.get(2);
356+
final Integer fromDateDay = fromDate.get(2);
357+
Assertions.assertNotEquals(repaymentsRescheduledDateDay, fromDateDay,
358+
"Verifying Repayment Rescheduled Day before Running Apply Holidays to Loans Scheduler Job");
359+
}
352360
}
353361
}
354362

355-
String JobName = "Apply Holidays To Loans";
363+
String jobName = "Apply Holidays To Loans";
356364

357-
this.schedulerJobHelper.executeAndAwaitJob(JobName);
365+
this.schedulerJobHelper.executeAndAwaitJob(jobName);
358366

359367
// Loan Repayment Schedule After Apply Holidays To Loans
360368
loanDetails = this.loanTransactionHelper.getLoanDetails(requestSpec, responseSpec, loanID);
361-
repaymentScheduleHashMap = JsonPath.from(loanDetails).get("repaymentSchedule");
362-
periods = (ArrayList<LinkedHashMap>) repaymentScheduleHashMap.get("periods");
369+
final LinkedHashMap repaymentScheduleHashMapAfterHolidaysApply = JsonPath.from(loanDetails).get("repaymentSchedule");
370+
final ArrayList<LinkedHashMap> periodsAfterHolidaysApply = (ArrayList<LinkedHashMap>) repaymentScheduleHashMapAfterHolidaysApply
371+
.get("periods");
363372
ArrayList<Integer> dateToApplyHolidays = null;
364373

365-
for (LinkedHashMap period : periods) {
366-
ArrayList<Integer> fromDate = (ArrayList<Integer>) period.get("fromDate");
367-
if (fromDate != null && Objects.equals(fromDate.get(1), repaymentsRescheduledDate.get(1))) {
368-
dateToApplyHolidays = fromDate;
374+
for (LinkedHashMap periodBefore : periodsBeforeHolidaysApply) {
375+
for (LinkedHashMap periodAfter : periodsAfterHolidaysApply) {
376+
final ArrayList<Integer> fromDateBefore = (ArrayList<Integer>) periodBefore.get("fromDate");
377+
final ArrayList<Integer> fromDateAfter = (ArrayList<Integer>) periodAfter.get("fromDate");
378+
379+
if (fromDateBefore != null && fromDateAfter != null) {
380+
final Integer fromDateMonthBefore = fromDateBefore.get(1);
381+
final Integer fromDateMonthAfter = fromDateAfter.get(1);
382+
final Integer repaymentsRescheduledDateMonth = repaymentsRescheduledDate.get(1);
383+
384+
if (Objects.equals(fromDateMonthAfter, repaymentsRescheduledDateMonth)) {
385+
dateToApplyHolidays = fromDateAfter;
386+
} else if (Objects.equals(fromDateMonthAfter, fromDateMonthBefore)) {
387+
assertEqualDay(fromDateBefore, fromDateAfter,
388+
"Verifying Repayment Scheduled Days Before And After Running Apply Holidays to Loans Scheduler Job Are Equals");
389+
}
390+
}
369391
}
370392
}
371393

372394
Assertions.assertNotNull(dateToApplyHolidays);
373-
Assertions.assertEquals(repaymentsRescheduledDate.get(0), dateToApplyHolidays.get(0),
374-
"Verifying Repayment Rescheduled Year after Running Apply Holidays to Loans Scheduler Job");
375-
Assertions.assertEquals(repaymentsRescheduledDate.get(2), dateToApplyHolidays.get(2),
395+
assertEqualDay(repaymentsRescheduledDate, dateToApplyHolidays,
376396
"Verifying Repayment Rescheduled Day after Running Apply Holidays to Loans Scheduler Job");
377397
}
378398

399+
private void assertEqualDay(ArrayList<Integer> fromDateBefore, ArrayList<Integer> fromDateAfter, String message) {
400+
Integer fromDateDayBefore = fromDateBefore.get(2);
401+
Integer fromDateDayAfter = fromDateAfter.get(2);
402+
Assertions.assertEquals(fromDateDayBefore, fromDateDayAfter, message);
403+
}
404+
379405
@Test
380406
public void testApplyDueFeeChargesForSavingsJobOutcome() throws InterruptedException {
381407
this.savingsAccountHelper = new SavingsAccountHelper(requestSpec, responseSpec);

0 commit comments

Comments
 (0)