Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2304,6 +2304,29 @@ public void loanTransactionsTabCheck(DataTable table) {
checkLoanTransactionTab(data, transactions, header, resourceId);
}

@Then("Loan Transactions tab has the following new buy down fee amortization data:")
public void loanTransactionsTabCheckNewBuyDownFeeAmortization(DataTable table) {
PostLoansResponse loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
long loanId = loanCreateResponse.getLoanId();
String resourceId = String.valueOf(loanId);

List<List<String>> expectedAmortization = testContext().get(TestContextKey.VERIFIED_LOAN_BUY_DOWN_FEE_AMORTIZATION);
if (expectedAmortization == null) {
expectedAmortization = new ArrayList<>();
testContext().set(TestContextKey.VERIFIED_LOAN_BUY_DOWN_FEE_AMORTIZATION, expectedAmortization);
}

List<GetLoansLoanIdTransactions> transactions = getBuyDownFeeAmortizationTransactions(loanId);
List<List<String>> data = table.asLists();
expectedAmortization.addAll(data.subList(1, data.size()));
List<String> header = table.row(0);

checkLoanTransactionTabRows(expectedAmortization, transactions, header, resourceId);
assertThat(transactions.size())
.as(ErrorMessageHelper.nrOfLinesWrongInTransactionsTab(resourceId, transactions.size(), expectedAmortization.size()))
.isEqualTo(expectedAmortization.size());
}

@Then("Loan Transactions tab has the following new accrual data:")
public void loanTransactionsTabCheckNewAccruals(DataTable table) {
PostLoansResponse loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
Expand Down Expand Up @@ -2396,6 +2419,24 @@ public List<GetLoansLoanIdTransactions> getAccrualTransactions(Long loanId) {
.filter(lt -> isLoanTransactionAccrual(lt) || isLoanTransactionAccrualAdjustment(lt)).toList();
}

public List<GetLoansLoanIdTransactions> getBuyDownFeeAmortizationTransactions(Long loanId) {
GetLoansLoanIdResponse loanDetailsResponse = ok(() -> fineractClient.loans().retrieveLoan(loanId,
Map.of("staffInSelectedOfficeOnly", "false", "associations", "transactions")));
return loanDetailsResponse.getTransactions().stream()
.filter(lt -> isLoanTransactionBuyDownFeeAmortization(lt) || isLoanTransactionBuyDownFeeAmortizationAdjustment(lt))
.toList();
}

private boolean isLoanTransactionBuyDownFeeAmortization(GetLoansLoanIdTransactions lt) {
assert lt.getType() != null;
return "Buy Down Fee Amortization".equalsIgnoreCase(lt.getType().getValue());
}

private boolean isLoanTransactionBuyDownFeeAmortizationAdjustment(GetLoansLoanIdTransactions lt) {
assert lt.getType() != null;
return "Buy Down Fee Amortization Adjustment".equalsIgnoreCase(lt.getType().getValue());
}

public void checkLoanTransactionTabRows(List<List<String>> data, List<GetLoansLoanIdTransactions> transactions, List<String> header,
String resourceId) {
for (int i = 1; i < data.size(); i++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,7 @@ public abstract class TestContextKey {
public static final String ORIGINATOR_SECOND_CREATE_RESPONSE = "originatorSecondCreateResponse";
public static final String ORIGINATOR_SECOND_EXTERNAL_ID = "originatorSecondExternalId";
public static final String VERIFIED_LOAN_ACCRUALS = "VERIFIED_LOAN_ACCRUALS";
public static final String VERIFIED_LOAN_BUY_DOWN_FEE_AMORTIZATION = "VERIFIED_LOAN_BUY_DOWN_FEE_AMORTIZATION";
public static final String DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INT_DAILY_EMI_360_30_INT_RECALC_DAILY_MULTIDISB_FULL_TERM_TRANCHE_DOWNPAYMENT = "loanProductCreateResponseLP2AdvancedPaymentInterestDailyEmi36030InterestRecalculationDailyMultidisburseFullTermTrancheDownPayment";
public static final String DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INT_DAILY_EMI_360_30_INT_RECALC_DAILY_MULTIDISB_FULL_TERM_TRANCHE_DOWNPAYMENT_AUTO = "loanProductCreateResponseLP2AdvancedPaymentInterestDailyEmi36030InterestRecalculationDailyMultidisburseFullTermTrancheDownPaymentAuto";
public static final String DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INT_DAILY_EMI_360_30_INT_RECALC_DAILY_MULTIDISB_FULL_TERM_TRANCHE_DEFERRED_INCOME = "loanProductCreateResponseLP2AdvancedPaymentInterestDailyEmi36030InterestRecalculationDailyMultidisburseFullTermTrancheDeferredIncome";
Expand Down
Loading
Loading