@@ -304,7 +304,7 @@ public void createWorkingCapitalLoanProductWithBreachIdAndOverrides() {
304304
305305 @ When ("Admin creates a Working Capital Loan Product with custom breach config and overrides enabled:" )
306306 public void createWorkingCapitalLoanProductWithCustomBreachConfig (final DataTable table ) {
307- final Map <String , String > data = table .asMaps ().get ( 0 );
307+ final Map <String , String > data = table .asMaps ().getFirst ( );
308308
309309 final String breachName = "WC Breach " + Utils .randomStringGenerator ("" , 10 );
310310 final WorkingCapitalBreachRequest breachRequest = new WorkingCapitalBreachRequest ().name (breachName )
@@ -332,6 +332,47 @@ public void createWorkingCapitalLoanProductWithCustomBreachConfig(final DataTabl
332332 checkWorkingCapitalLoanProductCreate ();
333333 }
334334
335+ @ When ("Admin creates a Working Capital Loan Product with breach and near breach config and overrides enabled:" )
336+ public void createWorkingCapitalLoanProductWithBreachAndNearBreachConfig (final DataTable table ) {
337+ final Map <String , String > data = table .asMaps ().getFirst ();
338+
339+ final String breachName = "WC Breach " + Utils .randomStringGenerator ("" , 10 );
340+ final WorkingCapitalBreachRequest breachRequest = new WorkingCapitalBreachRequest ().name (breachName )
341+ .breachFrequency (Integer .valueOf (data .get ("breachFrequency" ))).breachFrequencyType (data .get ("breachFrequencyType" ))
342+ .breachAmountCalculationType (data .get ("breachAmountCalculationType" ))
343+ .breachAmount (new BigDecimal (data .get ("breachAmount" )));
344+ final CommandProcessingResult breachCreateResponse = ok (
345+ () -> fineractFeignClient .workingCapitalBreaches ().createWorkingCapitalBreach (breachRequest ));
346+ final Long breachId = breachCreateResponse .getResourceId ();
347+ testContext ().set (TestContextKey .WORKING_CAPITAL_BREACH_ID , breachId );
348+
349+ final WorkingCapitalNearBreachRequest nearBreachRequest = new WorkingCapitalNearBreachRequest ()
350+ .nearBreachName ("WC Near Breach " + Utils .randomStringGenerator ("" , 10 ))
351+ .nearBreachFrequency (Integer .valueOf (data .get ("nearBreachFrequency" )))
352+ .nearBreachFrequencyType (data .get ("nearBreachFrequencyType" ))
353+ .nearBreachThreshold (new BigDecimal (data .get ("nearBreachThreshold" )));
354+ final CommandProcessingResult nearBreachCreateResponse = ok (
355+ () -> fineractFeignClient .workingCapitalNearBreaches ().createWorkingCapitalNearBreach (nearBreachRequest ));
356+ final Long nearBreachId = nearBreachCreateResponse .getResourceId ();
357+ testContext ().set (TestContextKey .WORKING_CAPITAL_NEAR_BREACH_ID , nearBreachId );
358+
359+ final String graceDaysStr = data .get ("delinquencyGraceDays" );
360+ final Integer graceDays = graceDaysStr != null && !graceDaysStr .isEmpty () ? Integer .valueOf (graceDaysStr ) : null ;
361+
362+ final String name = DefaultWorkingCapitalLoanProduct .WCLP .getName () + Utils .randomStringGenerator ("_" , 10 );
363+ final PostWorkingCapitalLoanProductsRequest request = workingCapitalRequestFactory
364+ .defaultWorkingCapitalLoanProductAllowAttributesOverrideRequest () //
365+ .name (name ) //
366+ .breachId (breachId ) //
367+ .nearBreachId (nearBreachId ) //
368+ .delinquencyGraceDays (graceDays );
369+
370+ final PostWorkingCapitalLoanProductsResponse response = createWorkingCapitalLoanProduct (request );
371+ testContext ().set (TestContextKey .WORKING_CAPITAL_LOAN_PRODUCT_CREATE_RESPONSE , response );
372+ testContext ().set (TestContextKey .WORKING_CAPITAL_LOAN_PRODUCT_CREATE_REQUEST , request );
373+ checkWorkingCapitalLoanProductCreate ();
374+ }
375+
335376 @ When ("Admin creates a new Working Capital Loan Product with external-id" )
336377 public void createWorkingCapitalLoanProductWithExternalId () {
337378 final String workingCapitalProductDefaultName = DefaultWorkingCapitalLoanProduct .WCLP .getName ()
0 commit comments