FINERACT-2017: Improve test apply holidays to loans job
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
index eb410a0..f8ec562 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
@@ -339,43 +339,69 @@
HashMap holidayData = HolidayHelper.getHolidayById(requestSpec, responseSpec, holidayId.toString());
ArrayList<Integer> repaymentsRescheduledDate = (ArrayList<Integer>) holidayData.get("repaymentsRescheduledTo");
+ Assertions.assertNotNull(repaymentsRescheduledDate);
// Loan Repayment Schedule Before Apply Holidays To Loans
- LinkedHashMap repaymentScheduleHashMap = JsonPath.from(loanDetails).get("repaymentSchedule");
- ArrayList<LinkedHashMap> periods = (ArrayList<LinkedHashMap>) repaymentScheduleHashMap.get("periods");
+ final LinkedHashMap repaymentScheduleHashMapBeforeHolidaysApply = JsonPath.from(loanDetails).get("repaymentSchedule");
+ final ArrayList<LinkedHashMap> periodsBeforeHolidaysApply = (ArrayList<LinkedHashMap>) repaymentScheduleHashMapBeforeHolidaysApply
+ .get("periods");
- for (LinkedHashMap period : periods) {
- ArrayList<Integer> fromDate = (ArrayList<Integer>) period.get("fromDate");
- if (fromDate != null && Objects.equals(fromDate.get(1), repaymentsRescheduledDate.get(1))) {
- Assertions.assertNotEquals(repaymentsRescheduledDate.get(2), fromDate.get(2),
- "Verifying Repayment Rescheduled Day before Running Apply Holidays to Loans Scheduler Job");
+ for (LinkedHashMap period : periodsBeforeHolidaysApply) {
+ final ArrayList<Integer> fromDate = (ArrayList<Integer>) period.get("fromDate");
+ if (fromDate != null) {
+ final Integer fromDateMonth = fromDate.get(1);
+ final Integer repaymentsRescheduledDateMonth = repaymentsRescheduledDate.get(1);
+ if (Objects.equals(fromDateMonth, repaymentsRescheduledDateMonth)) {
+ final Integer repaymentsRescheduledDateDay = repaymentsRescheduledDate.get(2);
+ final Integer fromDateDay = fromDate.get(2);
+ Assertions.assertNotEquals(repaymentsRescheduledDateDay, fromDateDay,
+ "Verifying Repayment Rescheduled Day before Running Apply Holidays to Loans Scheduler Job");
+ }
}
}
- String JobName = "Apply Holidays To Loans";
+ String jobName = "Apply Holidays To Loans";
- this.schedulerJobHelper.executeAndAwaitJob(JobName);
+ this.schedulerJobHelper.executeAndAwaitJob(jobName);
// Loan Repayment Schedule After Apply Holidays To Loans
loanDetails = this.loanTransactionHelper.getLoanDetails(requestSpec, responseSpec, loanID);
- repaymentScheduleHashMap = JsonPath.from(loanDetails).get("repaymentSchedule");
- periods = (ArrayList<LinkedHashMap>) repaymentScheduleHashMap.get("periods");
+ final LinkedHashMap repaymentScheduleHashMapAfterHolidaysApply = JsonPath.from(loanDetails).get("repaymentSchedule");
+ final ArrayList<LinkedHashMap> periodsAfterHolidaysApply = (ArrayList<LinkedHashMap>) repaymentScheduleHashMapAfterHolidaysApply
+ .get("periods");
ArrayList<Integer> dateToApplyHolidays = null;
- for (LinkedHashMap period : periods) {
- ArrayList<Integer> fromDate = (ArrayList<Integer>) period.get("fromDate");
- if (fromDate != null && Objects.equals(fromDate.get(1), repaymentsRescheduledDate.get(1))) {
- dateToApplyHolidays = fromDate;
+ for (LinkedHashMap periodBefore : periodsBeforeHolidaysApply) {
+ for (LinkedHashMap periodAfter : periodsAfterHolidaysApply) {
+ final ArrayList<Integer> fromDateBefore = (ArrayList<Integer>) periodBefore.get("fromDate");
+ final ArrayList<Integer> fromDateAfter = (ArrayList<Integer>) periodAfter.get("fromDate");
+
+ if (fromDateBefore != null && fromDateAfter != null) {
+ final Integer fromDateMonthBefore = fromDateBefore.get(1);
+ final Integer fromDateMonthAfter = fromDateAfter.get(1);
+ final Integer repaymentsRescheduledDateMonth = repaymentsRescheduledDate.get(1);
+
+ if (Objects.equals(fromDateMonthAfter, repaymentsRescheduledDateMonth)) {
+ dateToApplyHolidays = fromDateAfter;
+ } else if (Objects.equals(fromDateMonthAfter, fromDateMonthBefore)) {
+ assertEqualDay(fromDateBefore, fromDateAfter,
+ "Verifying Repayment Scheduled Days Before And After Running Apply Holidays to Loans Scheduler Job Are Equals");
+ }
+ }
}
}
Assertions.assertNotNull(dateToApplyHolidays);
- Assertions.assertEquals(repaymentsRescheduledDate.get(0), dateToApplyHolidays.get(0),
- "Verifying Repayment Rescheduled Year after Running Apply Holidays to Loans Scheduler Job");
- Assertions.assertEquals(repaymentsRescheduledDate.get(2), dateToApplyHolidays.get(2),
+ assertEqualDay(repaymentsRescheduledDate, dateToApplyHolidays,
"Verifying Repayment Rescheduled Day after Running Apply Holidays to Loans Scheduler Job");
}
+ private void assertEqualDay(ArrayList<Integer> fromDateBefore, ArrayList<Integer> fromDateAfter, String message) {
+ Integer fromDateDayBefore = fromDateBefore.get(2);
+ Integer fromDateDayAfter = fromDateAfter.get(2);
+ Assertions.assertEquals(fromDateDayBefore, fromDateDayAfter, message);
+ }
+
@Test
public void testApplyDueFeeChargesForSavingsJobOutcome() throws InterruptedException {
this.savingsAccountHelper = new SavingsAccountHelper(requestSpec, responseSpec);