@@ -297,6 +297,42 @@ public void reAgeContractTerminatedLoanFailure(final DataTable table) throws IOE
297297 assertThat (exception .getDeveloperMessage ()).contains (ErrorMessageHelper .reAgeContractTerminatedLoanFailure ());
298298 }
299299
300+ @ Then ("Admin fails to create a Loan re-aging transaction with the following data because loan was written-off:" )
301+ public void reAgeWrittenOffLoanFailure (final DataTable table ) throws IOException {
302+ final PostLoansResponse loanResponse = testContext ().get (TestContextKey .LOAN_CREATE_RESPONSE );
303+ Assertions .assertNotNull (loanResponse );
304+ final long loanId = loanResponse .getLoanId ();
305+
306+ List <List <String >> tableRows = table .asLists ();
307+ List <String > headers = tableRows .get (0 );
308+ List <String > values = tableRows .get (1 );
309+
310+ Map <String , String > rowData = new LinkedHashMap <>();
311+ int columnCount = Math .min (headers .size (), values .size ());
312+ for (int i = 0 ; i < columnCount ; i ++) {
313+ rowData .put (headers .get (i ), values .get (i ));
314+ }
315+
316+ int frequencyNumber = Integer .parseInt (resolveValue (rowData , values , 0 , "frequencyNumber" ));
317+ String frequencyType = resolveValue (rowData , values , 1 , "frequencyType" );
318+ String startDate = resolveValue (rowData , values , 2 , "startDate" );
319+ int numberOfInstallments = Integer .parseInt (resolveValue (rowData , values , 3 , "numberOfInstallments" ));
320+
321+ final PostLoansLoanIdTransactionsRequest reAgingRequest = LoanRequestFactory //
322+ .defaultReAgingRequest ()//
323+ .frequencyNumber (frequencyNumber )//
324+ .frequencyType (frequencyType )//
325+ .startDate (startDate )//
326+ .numberOfInstallments (numberOfInstallments );//
327+
328+ applyAdditionalFields (reAgingRequest , rowData , Set .of ("frequencyNumber" , "frequencyType" , "startDate" , "numberOfInstallments" ));
329+
330+ CallFailedRuntimeException exception = fail (() -> fineractClient .loanTransactions ().executeLoanTransaction (loanId , reAgingRequest ,
331+ Map .<String , Object >of ("command" , "reAge" )));
332+ assertThat (exception .getStatus ()).as (ErrorMessageHelper .dateFailureErrorCodeMsg ()).isEqualTo (403 );
333+ assertThat (exception .getDeveloperMessage ()).contains (ErrorMessageHelper .reAgeWrittenOffLoanFailure ());
334+ }
335+
300336 private Map <String , Object > resolveReAgingQueryParams (DataTable table ) {
301337 List <String > header = table .asLists ().get (0 );
302338 List <String > data = table .asLists ().get (1 );
0 commit comments