FINERACT-2215: added e2e tests for charge-off handling reversed transactions

This commit is contained in:
mdmytriv
2025-04-02 13:24:19 +02:00
committed by Adam Saghy
parent ba3aa80b7c
commit 741cdb1e42
3 changed files with 496 additions and 25 deletions
@@ -121,6 +121,12 @@ public final class ErrorMessageHelper {
loanIdStr);
}
public static String chargeOffUndoFailureDueToMonetaryActivityBefore(Long loanId) {
String loanIdStr = String.valueOf(loanId);
return String.format("Loan: %s charge-off cannot be executed. Loan has monetary activity after the charge-off transaction date!",
loanIdStr);
}
public static String notChargedOffFailure(Long loanId) {
String loanIdStr = String.valueOf(loanId);
return String.format("Loan: %s is not charged-off", loanIdStr);
@@ -1422,12 +1422,7 @@ public class LoanStepDef extends AbstractStepDef {
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
long loanId = loanResponse.body().getLoanId();
PostLoansLoanIdTransactionsRequest chargeOffRequest = LoanRequestFactory.defaultChargeOffRequest().transactionDate(transactionDate)
.dateFormat(DATE_FORMAT).locale(DEFAULT_LOCALE);
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = loanTransactionsApi
.executeLoanTransaction(loanId, chargeOffRequest, "charge-off").execute();
testContext().set(TestContextKey.LOAN_CHARGE_OFF_RESPONSE, chargeOffResponse);
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = chargeOffUndo(loanId, transactionDate);
ErrorHelper.checkSuccessfulApiCall(chargeOffResponse);
Long transactionId = chargeOffResponse.body().getResourceId();
@@ -1440,13 +1435,7 @@ public class LoanStepDef extends AbstractStepDef {
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
long loanId = loanResponse.body().getLoanId();
PostLoansLoanIdTransactionsRequest chargeOffRequest = LoanRequestFactory.defaultChargeOffRequest().transactionDate(transactionDate)
.dateFormat(DATE_FORMAT).locale(DEFAULT_LOCALE);
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = loanTransactionsApi
.executeLoanTransaction(loanId, chargeOffRequest, "charge-off").execute();
testContext().set(TestContextKey.LOAN_CHARGE_OFF_RESPONSE, chargeOffResponse);
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = chargeOffUndo(loanId, transactionDate);
assertThat(chargeOffResponse.isSuccessful()).isFalse();
String string = chargeOffResponse.errorBody().string();
@@ -1512,13 +1501,7 @@ public class LoanStepDef extends AbstractStepDef {
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
long loanId = loanResponse.body().getLoanId();
PostLoansLoanIdTransactionsRequest chargeOffRequest = LoanRequestFactory.defaultChargeOffRequest().transactionDate(transactionDate)
.dateFormat(DATE_FORMAT).locale(DEFAULT_LOCALE);
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = loanTransactionsApi
.executeLoanTransaction(loanId, chargeOffRequest, "charge-off").execute();
testContext().set(TestContextKey.LOAN_CHARGE_OFF_RESPONSE, chargeOffResponse);
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = chargeOffUndo(loanId, transactionDate);
assertThat(chargeOffResponse.isSuccessful()).isFalse();
String string = chargeOffResponse.errorBody().string();
@@ -1560,22 +1543,41 @@ public class LoanStepDef extends AbstractStepDef {
eventAssertion.assertEventRaised(LoanChargeOffUndoEvent.class, transactionId);
}
@Then("Charge-off undo is not possible on {string}")
public void chargeOffUndoFailure(String transactionDate) throws IOException {
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
Long loanId = loanResponse.body().getLoanId();
public Response<PostLoansLoanIdTransactionsResponse> chargeOffUndo(Long loanId, String transactionDate) throws IOException {
PostLoansLoanIdTransactionsRequest chargeOffRequest = LoanRequestFactory.defaultChargeOffRequest().transactionDate(transactionDate)
.dateFormat(DATE_FORMAT).locale(DEFAULT_LOCALE);
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = loanTransactionsApi
.executeLoanTransaction(loanId, chargeOffRequest, "charge-off").execute();
testContext().set(TestContextKey.LOAN_CHARGE_OFF_RESPONSE, chargeOffResponse);
return chargeOffResponse;
}
@Then("Charge-off undo is not possible on {string}")
public void chargeOffUndoFailure(String transactionDate) throws IOException {
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
Long loanId = loanResponse.body().getLoanId();
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = chargeOffUndo(loanId, transactionDate);
ErrorResponse errorDetails = ErrorResponse.from(chargeOffResponse);
assertThat(errorDetails.getHttpStatusCode()).as(ErrorMessageHelper.chargeOffUndoFailureCodeMsg()).isEqualTo(403);
assertThat(errorDetails.getSingleError().getDeveloperMessage()).isEqualTo(ErrorMessageHelper.chargeOffUndoFailure(loanId));
}
@Then("Charge-off undo is not possible on {string} due to monetary activity before")
public void chargeOffUndoFailureDueToMonetaryActivityBefore(String transactionDate) throws IOException {
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
Long loanId = loanResponse.body().getLoanId();
Response<PostLoansLoanIdTransactionsResponse> chargeOffResponse = chargeOffUndo(loanId, transactionDate);
ErrorResponse errorDetails = ErrorResponse.from(chargeOffResponse);
assertThat(errorDetails.getHttpStatusCode()).as(ErrorMessageHelper.chargeOffUndoFailureCodeMsg()).isEqualTo(403);
assertThat(errorDetails.getSingleError().getDeveloperMessage())
.isEqualTo(ErrorMessageHelper.chargeOffUndoFailureDueToMonetaryActivityBefore(loanId));
}
@Then("Charge-off undo is not possible as the loan is not charged-off")
public void chargeOffNotPossibleFailure() throws IOException {
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);