@@ -2222,18 +2222,103 @@ public void loanTransactionsTabCheck(DataTable table) {
22222222 Map .of ("staffInSelectedOfficeOnly" , "false" , "associations" , "transactions" )));
22232223 List <GetLoansLoanIdTransactions > transactions = loanDetailsResponse .getTransactions ();
22242224 List <List <String >> data = table .asLists ();
2225+ List <String > header = table .row (0 );
2226+ checkLoanTransactionTab (data , transactions , header , resourceId );
2227+ }
2228+
2229+ @ Then ("Loan Transactions tab has the following new accrual data:" )
2230+ public void loanTransactionsTabCheckNewAccruals (DataTable table ) {
2231+ PostLoansResponse loanCreateResponse = testContext ().get (TestContextKey .LOAN_CREATE_RESPONSE );
2232+ List <List <String >> expectedAccruals = testContext ().get (TestContextKey .VERIFIED_LOAN_ACCRUALS );
2233+ if (expectedAccruals == null ) {
2234+ expectedAccruals = new ArrayList <>();
2235+ testContext ().set (TestContextKey .VERIFIED_LOAN_ACCRUALS , expectedAccruals );
2236+ }
2237+ long loanId = loanCreateResponse .getLoanId ();
2238+ String resourceId = String .valueOf (loanId );
2239+ List <GetLoansLoanIdTransactions > transactions = getAccrualTransactions (loanId );
2240+ List <List <String >> data = table .asLists ();
2241+ expectedAccruals .addAll (data .subList (1 , data .size ()));
2242+ List <String > header = table .row (0 );
2243+
2244+ checkLoanTransactionTabRows (expectedAccruals , transactions , header , resourceId );
2245+ assertThat (transactions .size ())
2246+ .as (ErrorMessageHelper .nrOfLinesWrongInTransactionsTab (resourceId , transactions .size (), expectedAccruals .size ()))
2247+ .isEqualTo (expectedAccruals .size ());
2248+ }
2249+
2250+ @ Then ("Loan Transactions tab has no new accrual data" )
2251+ public void loanTransactionsTabCheckNoNewAccruals () {
2252+ PostLoansResponse loanCreateResponse = testContext ().get (TestContextKey .LOAN_CREATE_RESPONSE );
2253+ List <List <String >> expectedAccruals = testContext ().get (TestContextKey .VERIFIED_LOAN_ACCRUALS );
2254+ if (expectedAccruals == null ) {
2255+ expectedAccruals = new ArrayList <>();
2256+ testContext ().set (TestContextKey .VERIFIED_LOAN_ACCRUALS , expectedAccruals );
2257+ }
2258+ long loanId = loanCreateResponse .getLoanId ();
2259+ String resourceId = String .valueOf (loanId );
2260+
2261+ List <GetLoansLoanIdTransactions > transactions = getAccrualTransactions (loanId );
2262+ assertThat (transactions .size ())
2263+ .as (ErrorMessageHelper .nrOfLinesWrongInTransactionsTab (resourceId , transactions .size (), expectedAccruals .size ()))
2264+ .isEqualTo (expectedAccruals .size ());
2265+ }
2266+
2267+ @ Then ("Loan Transactions tab has the following accrual data:" )
2268+ public void loanTransactionsTabCheckAccruals (DataTable table ) {
2269+ PostLoansResponse loanCreateResponse = testContext ().get (TestContextKey .LOAN_CREATE_RESPONSE );
2270+ long loanId = loanCreateResponse .getLoanId ();
2271+ String resourceId = String .valueOf (loanId );
2272+ List <GetLoansLoanIdTransactions > transactions = getAccrualTransactions (loanId );
2273+ List <List <String >> data = table .asLists ();
2274+ List <String > header = table .row (0 );
2275+
2276+ checkLoanTransactionTab (data , transactions , header , resourceId );
2277+ }
2278+
2279+ @ Then ("Loan Transactions tab has the following data without accruals:" )
2280+ public void loanTransactionsTabCheckWithoutAccruals (DataTable table ) {
2281+ PostLoansResponse loanCreateResponse = testContext ().get (TestContextKey .LOAN_CREATE_RESPONSE );
2282+ long loanId = loanCreateResponse .getLoanId ();
2283+ String resourceId = String .valueOf (loanId );
2284+
2285+ GetLoansLoanIdResponse loanDetailsResponse = ok (() -> fineractClient .loans ().retrieveLoan (loanId ,
2286+ Map .of ("staffInSelectedOfficeOnly" , "false" , "associations" , "transactions" )));
2287+ List <GetLoansLoanIdTransactions > transactions = loanDetailsResponse .getTransactions ().stream ()
2288+ .filter (lt -> !lt .getType ().getAccrual () && !"Accrual Adjustment" .equalsIgnoreCase (lt .getType ().getValue ())).toList ();
2289+ List <List <String >> data = table .asLists ();
2290+ List <String > header = table .row (0 );
2291+
2292+ checkLoanTransactionTab (data , transactions , header , resourceId );
2293+ }
2294+
2295+ public List <GetLoansLoanIdTransactions > getAccrualTransactions (Long loanId ) {
2296+ GetLoansLoanIdResponse loanDetailsResponse = ok (() -> fineractClient .loans ().retrieveLoan (loanId ,
2297+ Map .of ("staffInSelectedOfficeOnly" , "false" , "associations" , "transactions" )));
2298+ return loanDetailsResponse .getTransactions ().stream ().filter (
2299+ lt -> "Accrual" .equalsIgnoreCase (lt .getType ().getValue ()) || "Accrual Adjustment" .equalsIgnoreCase (lt .getType ().getValue ()))
2300+ .toList ();
2301+ }
2302+
2303+ public void checkLoanTransactionTabRows (List <List <String >> data , List <GetLoansLoanIdTransactions > transactions , List <String > header ,
2304+ String resourceId ) {
22252305 for (int i = 1 ; i < data .size (); i ++) {
22262306 List <String > expectedValues = data .get (i );
22272307 String transactionDateExpected = expectedValues .get (0 );
22282308 List <List <String >> actualValuesList = transactions .stream ()//
22292309 .filter (t -> transactionDateExpected .equals (FORMATTER .format (t .getDate ())))//
2230- .map (t -> fetchValuesOfTransaction (table . row ( 0 ) , t ))//
2310+ .map (t -> fetchValuesOfTransaction (header , t ))//
22312311 .collect (Collectors .toList ());//
22322312 boolean containsExpectedValues = actualValuesList .stream ()//
22332313 .anyMatch (actualValues -> actualValues .equals (expectedValues ));//
22342314 assertThat (containsExpectedValues )
22352315 .as (ErrorMessageHelper .wrongValueInLineInTransactionsTab (resourceId , i , actualValuesList , expectedValues )).isTrue ();
22362316 }
2317+ }
2318+
2319+ public void checkLoanTransactionTab (List <List <String >> data , List <GetLoansLoanIdTransactions > transactions , List <String > header ,
2320+ String resourceId ) {
2321+ checkLoanTransactionTabRows (data , transactions , header , resourceId );
22372322 assertThat (transactions .size ())
22382323 .as (ErrorMessageHelper .nrOfLinesWrongInTransactionsTab (resourceId , transactions .size (), data .size () - 1 ))
22392324 .isEqualTo (data .size () - 1 );
0 commit comments