From 89750eeb2eb83827b89185973703470db8251442 Mon Sep 17 00:00:00 2001 From: mariiaKraievska Date: Tue, 19 Dec 2023 21:27:24 +0200 Subject: [PATCH] FINERACT-2017: Improve test apply holidays to loans job --- .../SchedulerJobsTestResults.java | 62 +++++++++++++------ 1 file changed, 44 insertions(+), 18 deletions(-) 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 eb410a05d..f8ec562bd 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 @@ public class SchedulerJobsTestResults { HashMap holidayData = HolidayHelper.getHolidayById(requestSpec, responseSpec, holidayId.toString()); ArrayList repaymentsRescheduledDate = (ArrayList) holidayData.get("repaymentsRescheduledTo"); + Assertions.assertNotNull(repaymentsRescheduledDate); // Loan Repayment Schedule Before Apply Holidays To Loans - LinkedHashMap repaymentScheduleHashMap = JsonPath.from(loanDetails).get("repaymentSchedule"); - ArrayList periods = (ArrayList) repaymentScheduleHashMap.get("periods"); + final LinkedHashMap repaymentScheduleHashMapBeforeHolidaysApply = JsonPath.from(loanDetails).get("repaymentSchedule"); + final ArrayList periodsBeforeHolidaysApply = (ArrayList) repaymentScheduleHashMapBeforeHolidaysApply + .get("periods"); - for (LinkedHashMap period : periods) { - ArrayList fromDate = (ArrayList) 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 fromDate = (ArrayList) 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) repaymentScheduleHashMap.get("periods"); + final LinkedHashMap repaymentScheduleHashMapAfterHolidaysApply = JsonPath.from(loanDetails).get("repaymentSchedule"); + final ArrayList periodsAfterHolidaysApply = (ArrayList) repaymentScheduleHashMapAfterHolidaysApply + .get("periods"); ArrayList dateToApplyHolidays = null; - for (LinkedHashMap period : periods) { - ArrayList fromDate = (ArrayList) 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 fromDateBefore = (ArrayList) periodBefore.get("fromDate"); + final ArrayList fromDateAfter = (ArrayList) 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 fromDateBefore, ArrayList 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);