@@ -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