FINERACT-2354: e2e tests for re-aging with accruals for default behaviour
This commit is contained in:
committed by
Adam Saghy
parent
fcf1fb6126
commit
b59abb3fbc
+86
-1
@@ -2222,18 +2222,103 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
Map.of("staffInSelectedOfficeOnly", "false", "associations", "transactions")));
|
||||
List<GetLoansLoanIdTransactions> transactions = loanDetailsResponse.getTransactions();
|
||||
List<List<String>> data = table.asLists();
|
||||
List<String> header = table.row(0);
|
||||
checkLoanTransactionTab(data, transactions, header, resourceId);
|
||||
}
|
||||
|
||||
@Then("Loan Transactions tab has the following new accrual data:")
|
||||
public void loanTransactionsTabCheckNewAccruals(DataTable table) {
|
||||
PostLoansResponse loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
List<List<String>> expectedAccruals = testContext().get(TestContextKey.VERIFIED_LOAN_ACCRUALS);
|
||||
if (expectedAccruals == null) {
|
||||
expectedAccruals = new ArrayList<>();
|
||||
testContext().set(TestContextKey.VERIFIED_LOAN_ACCRUALS, expectedAccruals);
|
||||
}
|
||||
long loanId = loanCreateResponse.getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
List<GetLoansLoanIdTransactions> transactions = getAccrualTransactions(loanId);
|
||||
List<List<String>> data = table.asLists();
|
||||
expectedAccruals.addAll(data.subList(1, data.size()));
|
||||
List<String> header = table.row(0);
|
||||
|
||||
checkLoanTransactionTabRows(expectedAccruals, transactions, header, resourceId);
|
||||
assertThat(transactions.size())
|
||||
.as(ErrorMessageHelper.nrOfLinesWrongInTransactionsTab(resourceId, transactions.size(), expectedAccruals.size()))
|
||||
.isEqualTo(expectedAccruals.size());
|
||||
}
|
||||
|
||||
@Then("Loan Transactions tab has no new accrual data")
|
||||
public void loanTransactionsTabCheckNoNewAccruals() {
|
||||
PostLoansResponse loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
List<List<String>> expectedAccruals = testContext().get(TestContextKey.VERIFIED_LOAN_ACCRUALS);
|
||||
if (expectedAccruals == null) {
|
||||
expectedAccruals = new ArrayList<>();
|
||||
testContext().set(TestContextKey.VERIFIED_LOAN_ACCRUALS, expectedAccruals);
|
||||
}
|
||||
long loanId = loanCreateResponse.getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
List<GetLoansLoanIdTransactions> transactions = getAccrualTransactions(loanId);
|
||||
assertThat(transactions.size())
|
||||
.as(ErrorMessageHelper.nrOfLinesWrongInTransactionsTab(resourceId, transactions.size(), expectedAccruals.size()))
|
||||
.isEqualTo(expectedAccruals.size());
|
||||
}
|
||||
|
||||
@Then("Loan Transactions tab has the following accrual data:")
|
||||
public void loanTransactionsTabCheckAccruals(DataTable table) {
|
||||
PostLoansResponse loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanCreateResponse.getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
List<GetLoansLoanIdTransactions> transactions = getAccrualTransactions(loanId);
|
||||
List<List<String>> data = table.asLists();
|
||||
List<String> header = table.row(0);
|
||||
|
||||
checkLoanTransactionTab(data, transactions, header, resourceId);
|
||||
}
|
||||
|
||||
@Then("Loan Transactions tab has the following data without accruals:")
|
||||
public void loanTransactionsTabCheckWithoutAccruals(DataTable table) {
|
||||
PostLoansResponse loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanCreateResponse.getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
GetLoansLoanIdResponse loanDetailsResponse = ok(() -> fineractClient.loans().retrieveLoan(loanId,
|
||||
Map.of("staffInSelectedOfficeOnly", "false", "associations", "transactions")));
|
||||
List<GetLoansLoanIdTransactions> transactions = loanDetailsResponse.getTransactions().stream()
|
||||
.filter(lt -> !lt.getType().getAccrual() && !"Accrual Adjustment".equalsIgnoreCase(lt.getType().getValue())).toList();
|
||||
List<List<String>> data = table.asLists();
|
||||
List<String> header = table.row(0);
|
||||
|
||||
checkLoanTransactionTab(data, transactions, header, resourceId);
|
||||
}
|
||||
|
||||
public List<GetLoansLoanIdTransactions> getAccrualTransactions(Long loanId) {
|
||||
GetLoansLoanIdResponse loanDetailsResponse = ok(() -> fineractClient.loans().retrieveLoan(loanId,
|
||||
Map.of("staffInSelectedOfficeOnly", "false", "associations", "transactions")));
|
||||
return loanDetailsResponse.getTransactions().stream().filter(
|
||||
lt -> "Accrual".equalsIgnoreCase(lt.getType().getValue()) || "Accrual Adjustment".equalsIgnoreCase(lt.getType().getValue()))
|
||||
.toList();
|
||||
}
|
||||
|
||||
public void checkLoanTransactionTabRows(List<List<String>> data, List<GetLoansLoanIdTransactions> transactions, List<String> header,
|
||||
String resourceId) {
|
||||
for (int i = 1; i < data.size(); i++) {
|
||||
List<String> expectedValues = data.get(i);
|
||||
String transactionDateExpected = expectedValues.get(0);
|
||||
List<List<String>> actualValuesList = transactions.stream()//
|
||||
.filter(t -> transactionDateExpected.equals(FORMATTER.format(t.getDate())))//
|
||||
.map(t -> fetchValuesOfTransaction(table.row(0), t))//
|
||||
.map(t -> fetchValuesOfTransaction(header, t))//
|
||||
.collect(Collectors.toList());//
|
||||
boolean containsExpectedValues = actualValuesList.stream()//
|
||||
.anyMatch(actualValues -> actualValues.equals(expectedValues));//
|
||||
assertThat(containsExpectedValues)
|
||||
.as(ErrorMessageHelper.wrongValueInLineInTransactionsTab(resourceId, i, actualValuesList, expectedValues)).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
public void checkLoanTransactionTab(List<List<String>> data, List<GetLoansLoanIdTransactions> transactions, List<String> header,
|
||||
String resourceId) {
|
||||
checkLoanTransactionTabRows(data, transactions, header, resourceId);
|
||||
assertThat(transactions.size())
|
||||
.as(ErrorMessageHelper.nrOfLinesWrongInTransactionsTab(resourceId, transactions.size(), data.size() - 1))
|
||||
.isEqualTo(data.size() - 1);
|
||||
|
||||
+1
@@ -295,4 +295,5 @@ public abstract class TestContextKey {
|
||||
public static final String DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADVANCED_CUSTOM_PAYMENT_ALLOCATION_PROGRESSIVE_LOAN_SCHEDULE_PRINCIPAL_FIRST = "loanProductCreateResponseLP2AdvancedPaymentHorizontalPrincipalFirst";
|
||||
public static final String DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALC_DAILY_MULTIDISBURSE_FULL_TERM_TRANCHE = "loanProductCreateResponseLP2AdvancedPaymentInterestDailyEmi36030InterestRecalculationDailyMultidisburseFullTermTranche";
|
||||
public static final String DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_360_30_USD = "loanProductCreateResponseLP2AdvancedPaymentHorizontal36030Usd";
|
||||
public static final String VERIFIED_LOAN_ACCRUALS = "VERIFIED_LOAN_ACCRUALS";
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user