@@ -402,6 +402,142 @@ private void assertEqualDay(ArrayList<Integer> fromDateBefore, ArrayList<Integer
402402 Assertions .assertEquals (fromDateDayBefore , fromDateDayAfter , message );
403403 }
404404
405+ @ Test
406+ public void testApplyType1HolidaysToLoansJobOutcome () throws InterruptedException {
407+ this .loanTransactionHelper = new LoanTransactionHelper (requestSpec , responseSpec );
408+
409+ final Integer clientID = ClientHelper .createClient (requestSpec , responseSpec );
410+ Assertions .assertNotNull (clientID );
411+
412+ Integer holidayId = HolidayHelper .createTyoe1Holidays (requestSpec , responseSpec );
413+ Assertions .assertNotNull (holidayId );
414+
415+ final Integer loanProductID = createLoanProduct (null );
416+ Assertions .assertNotNull (loanProductID );
417+
418+ final Integer loanID = applyForLoanApplication (clientID .toString (), loanProductID .toString (), null , "04 January 2024" );
419+ Assertions .assertNotNull (loanID );
420+
421+ HashMap loanStatusHashMap = LoanStatusChecker .getStatusOfLoan (requestSpec , responseSpec , loanID );
422+ LoanStatusChecker .verifyLoanIsPending (loanStatusHashMap );
423+
424+ loanStatusHashMap = this .loanTransactionHelper .approveLoan ("04 January 2024" , loanID );
425+ LoanStatusChecker .verifyLoanIsApproved (loanStatusHashMap );
426+
427+ String loanDetails = this .loanTransactionHelper .getLoanDetails (requestSpec , responseSpec , loanID );
428+ loanStatusHashMap = this .loanTransactionHelper .disburseLoanWithNetDisbursalAmount ("04 January 2024" , loanID ,
429+ JsonPath .from (loanDetails ).get ("netDisbursalAmount" ).toString ());
430+ LoanStatusChecker .verifyLoanIsActive (loanStatusHashMap );
431+
432+ // Retrieving All Global Configuration details
433+ final ArrayList <HashMap > globalConfig = GlobalConfigurationHelper .getAllGlobalConfigurations (requestSpec , responseSpec );
434+ Assertions .assertNotNull (globalConfig );
435+
436+ // Updating Value for reschedule-repayments-on-holidays Global
437+ // Configuration
438+ Integer configId = (Integer ) globalConfig .get (3 ).get ("id" );
439+ Assertions .assertNotNull (configId );
440+
441+ HashMap configData = GlobalConfigurationHelper .getGlobalConfigurationById (requestSpec , responseSpec , configId .toString ());
442+ Assertions .assertNotNull (configData );
443+
444+ Boolean enabled = (Boolean ) globalConfig .get (3 ).get ("enabled" );
445+
446+ if (!enabled ) {
447+ enabled = true ;
448+ GlobalConfigurationHelper .updateEnabledFlagForGlobalConfiguration (requestSpec , responseSpec , configId , enabled );
449+ }
450+
451+ holidayId = HolidayHelper .activateHolidays (requestSpec , responseSpec , holidayId .toString ());
452+ Assertions .assertNotNull (holidayId );
453+
454+ HashMap holidayData = HolidayHelper .getHolidayById (requestSpec , responseSpec , holidayId .toString ());
455+
456+ LinkedHashMap repaymentScheduleHashMap = JsonPath .from (loanDetails ).get ("repaymentSchedule" );
457+ ArrayList <LinkedHashMap > periods = (ArrayList <LinkedHashMap >) repaymentScheduleHashMap .get ("periods" );
458+ String JobName = "Apply Holidays To Loans" ;
459+
460+ this .schedulerJobHelper .executeAndAwaitJob (JobName );
461+
462+ // Loan Repayment Schedule After Apply Holidays To Loans
463+ loanDetails = this .loanTransactionHelper .getLoanDetails (requestSpec , responseSpec , loanID );
464+ repaymentScheduleHashMap = JsonPath .from (loanDetails ).get ("repaymentSchedule" );
465+ ArrayList <LinkedHashMap > periodsAfterRescheduleApplied = (ArrayList <LinkedHashMap >) repaymentScheduleHashMap .get ("periods" );
466+
467+ ArrayList <Integer > fromDateValues = (ArrayList <Integer >) periods .get (1 ).get ("fromDate" );
468+ LocalDate fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
469+ ArrayList <Integer > dueDateValues = (ArrayList <Integer >) periods .get (1 ).get ("dueDate" );
470+ LocalDate dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
471+ Assertions .assertEquals (LocalDate .of (2024 , 1 , 4 ), fromDate ,
472+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
473+ Assertions .assertEquals (LocalDate .of (2024 , 2 , 4 ), dueDate ,
474+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
475+
476+ fromDateValues = (ArrayList <Integer >) periods .get (2 ).get ("fromDate" );
477+ fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
478+ dueDateValues = (ArrayList <Integer >) periods .get (2 ).get ("dueDate" );
479+ dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
480+ Assertions .assertEquals (LocalDate .of (2024 , 2 , 4 ), fromDate ,
481+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
482+ Assertions .assertEquals (LocalDate .of (2024 , 3 , 4 ), dueDate ,
483+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
484+
485+ fromDateValues = (ArrayList <Integer >) periods .get (3 ).get ("fromDate" );
486+ fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
487+ dueDateValues = (ArrayList <Integer >) periods .get (3 ).get ("dueDate" );
488+ dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
489+ Assertions .assertEquals (LocalDate .of (2024 , 3 , 4 ), fromDate ,
490+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
491+ Assertions .assertEquals (LocalDate .of (2024 , 4 , 4 ), dueDate ,
492+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
493+
494+ fromDateValues = (ArrayList <Integer >) periods .get (4 ).get ("fromDate" );
495+ fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
496+ dueDateValues = (ArrayList <Integer >) periods .get (4 ).get ("dueDate" );
497+ dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
498+ Assertions .assertEquals (LocalDate .of (2024 , 4 , 4 ), fromDate ,
499+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
500+ Assertions .assertEquals (LocalDate .of (2024 , 5 , 4 ), dueDate ,
501+ "Verifying Repayment Rescheduled Date before Running Apply Holidays to Loans Scheduler Job" );
502+
503+ fromDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (1 ).get ("fromDate" );
504+ fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
505+ dueDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (1 ).get ("dueDate" );
506+ dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
507+ Assertions .assertEquals (LocalDate .of (2024 , 1 , 4 ), fromDate ,
508+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
509+ Assertions .assertEquals (LocalDate .of (2024 , 2 , 4 ), dueDate ,
510+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
511+
512+ fromDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (2 ).get ("fromDate" );
513+ fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
514+ dueDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (2 ).get ("dueDate" );
515+ dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
516+ Assertions .assertEquals (LocalDate .of (2024 , 2 , 4 ), fromDate ,
517+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
518+ Assertions .assertEquals (LocalDate .of (2024 , 3 , 4 ), dueDate ,
519+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
520+
521+ fromDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (3 ).get ("fromDate" );
522+ fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
523+ dueDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (3 ).get ("dueDate" );
524+ dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
525+ Assertions .assertEquals (LocalDate .of (2024 , 3 , 4 ), fromDate ,
526+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
527+ Assertions .assertEquals (LocalDate .of (2024 , 5 , 4 ), dueDate ,
528+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
529+
530+ fromDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (4 ).get ("fromDate" );
531+ fromDate = LocalDate .of (fromDateValues .get (0 ), fromDateValues .get (1 ), fromDateValues .get (2 ));
532+ dueDateValues = (ArrayList <Integer >) periodsAfterRescheduleApplied .get (4 ).get ("dueDate" );
533+ dueDate = LocalDate .of (dueDateValues .get (0 ), dueDateValues .get (1 ), dueDateValues .get (2 ));
534+ Assertions .assertEquals (LocalDate .of (2024 , 5 , 4 ), fromDate ,
535+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
536+ Assertions .assertEquals (LocalDate .of (2024 , 6 , 4 ), dueDate ,
537+ "Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job" );
538+
539+ }
540+
405541 @ Test
406542 public void testApplyDueFeeChargesForSavingsJobOutcome () throws InterruptedException {
407543 this .savingsAccountHelper = new SavingsAccountHelper (requestSpec , responseSpec );
0 commit comments