FINERACT-2060: Progressive loan - final accrual calculation on closed loan
This commit is contained in:
committed by
Arnold Gálovics
parent
c4cdd6f51a
commit
136bb0009a
+36
-88
@@ -348,9 +348,12 @@ public final class ErrorMessageHelper {
|
||||
}
|
||||
|
||||
public static String wrongLoanStatus(Integer actual, Integer expected) {
|
||||
String actualToStr = actual.toString();
|
||||
String expectedToStr = expected.toString();
|
||||
return String.format("Wrong Loan status ID. Actual ID is: %s - But expected ID is: %s", actualToStr, expectedToStr);
|
||||
return wrongLoanStatus(null, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongLoanStatus(String resourceId, Integer actual, Integer expected) {
|
||||
return String.format("Wrong Loan status ID of resource %s. Actual ID is: %s - But expected ID is: %s", resourceId, actual,
|
||||
expected);
|
||||
}
|
||||
|
||||
public static String wrongFraudFlag(Boolean actualFraudStatus, Boolean expectedFraudStatus) {
|
||||
@@ -446,109 +449,54 @@ public final class ErrorMessageHelper {
|
||||
return String.format("Idempotency key is not matching: Actual value is: %s - But expected value is: %s", actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongNumberOfLinesInRepaymentSchedule(int actual, int expected) {
|
||||
return wrongNumberOfLinesInRepaymentSchedule(null, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongNumberOfLinesInRepaymentSchedule(String resourceId, int actual, int expected) {
|
||||
String actualStr = String.valueOf(actual);
|
||||
String expectedStr = String.valueOf(expected);
|
||||
String prefx = "Number of lines in Repayment schedule";
|
||||
String postfx = " is not correct. Actual value is: %s - Expected value is: %s";
|
||||
if (resourceId != null) {
|
||||
return String.format(prefx + " of resource %s" + postfx, resourceId, actualStr, expectedStr);
|
||||
}
|
||||
return String.format(prefx + postfx, actualStr, expectedStr);
|
||||
return String.format("Number of lines in Repayment schedule of resource %s is not correct. " //
|
||||
+ "Actual value is: %s - But expected value is: %s", resourceId, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongValueInLineInRepaymentSchedule(int line, List<List<String>> actual, List<String> expected) {
|
||||
return wrongValueInLineInRepaymentSchedule(null, line, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongValueInLineInRepaymentSchedule(String resourceId, int line, List<List<String>> actual,
|
||||
public static String wrongValueInLineInRepaymentSchedule(String resourceId, int line, List<List<String>> actualList,
|
||||
List<String> expected) {
|
||||
String lineStr = String.valueOf(line);
|
||||
String expectedStr = expected.toString();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (List<String> innerList : actual) {
|
||||
sb.append(innerList.toString());
|
||||
sb.append(System.lineSeparator());
|
||||
}
|
||||
String prefx = "%nWrong value in Repayment schedule";
|
||||
String postfx = " tab line %s. %nActual values in line (with the same due date) are: %n%s %nExpected values in line: %n%s";
|
||||
if (resourceId != null) {
|
||||
return String.format(prefx + " of resource %s" + postfx, resourceId, lineStr, sb.toString(), expectedStr);
|
||||
}
|
||||
return String.format(prefx + postfx, lineStr, sb.toString(), expectedStr);
|
||||
String actual = actualList.stream().map(Object::toString).collect(Collectors.joining(System.lineSeparator()));
|
||||
return String.format("%nWrong value in Repayment schedule of resource %s tab line %s." //
|
||||
+ "%nActual values in line (with the same due date) are: %n%s - But expected values in line: %n%s", resourceId, line,
|
||||
actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongValueInLineInTransactionsTab(int line, List<List<String>> actual, List<String> expected) {
|
||||
return wrongValueInLineInTransactionsTab(null, line, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongValueInLineInTransactionsTab(String resourceId, int line, List<List<String>> actual, List<String> expected) {
|
||||
String lineStr = String.valueOf(line);
|
||||
String expectedStr = expected.toString();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (List<String> innerList : actual) {
|
||||
sb.append(innerList.toString());
|
||||
sb.append(System.lineSeparator());
|
||||
}
|
||||
String prefx = "%nWrong value in Transactions tab";
|
||||
String postfx = " line %s. %nActual values in line (with the same date) are: %n%s %nExpected values in line: %n%s";
|
||||
if (resourceId != null) {
|
||||
return String.format(prefx + " of resource %s" + postfx, resourceId, lineStr, sb.toString(), expectedStr);
|
||||
}
|
||||
return String.format(prefx + postfx, lineStr, sb.toString(), expectedStr);
|
||||
}
|
||||
|
||||
public static String nrOfLinesWrongInTransactionsTab(int actual, int expected) {
|
||||
return nrOfLinesWrongInTransactionsTab(null, actual, expected);
|
||||
public static String wrongValueInLineInTransactionsTab(String resourceId, int line, List<List<String>> actualList,
|
||||
List<String> expected) {
|
||||
String actual = actualList.stream().map(Object::toString).collect(Collectors.joining(System.lineSeparator()));
|
||||
return String.format("%nWrong value in Transactions tab of resource %s line %s." //
|
||||
+ "%nActual values in line (with the same date) are: %n%s %nExpected values in line: %n%s", resourceId, line, actual,
|
||||
expected);
|
||||
}
|
||||
|
||||
public static String nrOfLinesWrongInTransactionsTab(String resourceId, int actual, int expected) {
|
||||
String actualStr = String.valueOf(actual);
|
||||
String expectedStr = String.valueOf(expected);
|
||||
|
||||
String prefx = "%nNumber of lines does not match in Transactions tab and expected datatable";
|
||||
String postfx = ". %nNumber of transaction tab lines: %s %nNumber of expected datatable lines: %s%n";
|
||||
if (resourceId != null) {
|
||||
return String.format(prefx + " of resource %s" + postfx, resourceId, actualStr, expectedStr);
|
||||
}
|
||||
return String.format(prefx + postfx, actualStr, expectedStr);
|
||||
return String.format("%nNumber of lines does not match in Transactions tab and expected datatable of resource %s." //
|
||||
+ "%nNumber of transaction tab lines: %s %nNumber of expected datatable lines: %s%n", resourceId, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongValueInLineInChargesTab(int line, List<List<String>> actual, List<String> expected) {
|
||||
String lineStr = String.valueOf(line);
|
||||
String expectedStr = expected.toString();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (List<String> innerList : actual) {
|
||||
sb.append(innerList.toString());
|
||||
sb.append(System.lineSeparator());
|
||||
}
|
||||
|
||||
return String.format(
|
||||
"%nWrong value in Charges tab line %s. %nActual values in line (with the same date) are: %n%s %nExpected values in line: %n%s",
|
||||
lineStr, sb.toString(), expectedStr);
|
||||
public static String wrongValueInLineInChargesTab(String resourceId, int line, List<List<String>> actualList, List<String> expected) {
|
||||
String actual = actualList.stream().map(Object::toString).collect(Collectors.joining(System.lineSeparator()));
|
||||
return String.format("%nWrong value in Charges tab of resource %s line %s." //
|
||||
+ "%nActual values in line (with the same date) are: %n%s %nExpected values in line: %n%s", resourceId, line, actual,
|
||||
expected);
|
||||
}
|
||||
|
||||
public static String wrongValueInLineInJournalEntries(int line, List<List<List<String>>> actual, List<String> expected) {
|
||||
String lineStr = String.valueOf(line);
|
||||
String expectedStr = expected.toString();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (List<List<String>> innerList : actual) {
|
||||
sb.append(innerList.toString());
|
||||
sb.append(System.lineSeparator());
|
||||
}
|
||||
return wrongValueInLineInJournalEntries(null, line, actual, expected);
|
||||
}
|
||||
|
||||
return String.format(
|
||||
"%nWrong value in Journal entries line %s. %nActual values for the possible transactions in line (with the same date) are: %n%s %nExpected values in line: %n%s",
|
||||
lineStr, sb.toString(), expectedStr);
|
||||
public static String wrongValueInLineInJournalEntries(String resourceId, int line, List<List<List<String>>> actualList,
|
||||
List<String> expected) {
|
||||
String actual = actualList.stream().map(Object::toString).collect(Collectors.joining(System.lineSeparator()));
|
||||
return String.format("%nWrong value in Journal entries of resource %s line %s." //
|
||||
+ "%nActual values for the possible transactions in line (with the same date) are: %n%s %nExpected values in line: %n%s",
|
||||
resourceId, line, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongDataInJournalEntriesGlAccountType(int line, String actual, String expected) {
|
||||
return String.format("Wrong data in Journal entries, line %s / GL account type. Actual value is: %s - But expected value is: %s",
|
||||
line, actual, expected);
|
||||
return String.format("Wrong data in Journal entries, line %s / GL account type. " //
|
||||
+ "Actual value is: %s - But expected value is: %s", line, actual, expected);
|
||||
}
|
||||
|
||||
public static String wrongDataInJournalEntriesGlAccountCode(int line, String actual, String expected) {
|
||||
|
||||
+3
-1
@@ -865,7 +865,9 @@ public class BatchApiStepDef extends AbstractStepDef {
|
||||
Integer statusIdActual = status.getId();
|
||||
Integer statusIdExpected = LoanStatus.APPROVED.value;
|
||||
|
||||
assertThat(statusIdActual).as(ErrorMessageHelper.wrongLoanStatus(statusIdActual, statusIdExpected)).isEqualTo(statusIdExpected);
|
||||
String resourceId = String.valueOf(response.body().getId());
|
||||
assertThat(statusIdActual).as(ErrorMessageHelper.wrongLoanStatus(resourceId, statusIdActual, statusIdExpected))
|
||||
.isEqualTo(statusIdExpected);
|
||||
}
|
||||
|
||||
@Then("Nr. {int} Client creation was rolled back")
|
||||
|
||||
+6
-2
@@ -59,6 +59,7 @@ public class JournalEntriesStepDef extends AbstractStepDef {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
|
||||
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanResponse.body().getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
Response<GetLoansLoanIdResponse> loanDetailsResponse = loansApi.retrieveLoan(loanId, false, "transactions", "", "").execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse);
|
||||
@@ -132,7 +133,8 @@ public class JournalEntriesStepDef extends AbstractStepDef {
|
||||
}
|
||||
}
|
||||
assertThat(containsAnyExpected)
|
||||
.as(ErrorMessageHelper.wrongValueInLineInJournalEntries(i, possibleActualValuesList, expectedValues)).isTrue();
|
||||
.as(ErrorMessageHelper.wrongValueInLineInJournalEntries(resourceId, i, possibleActualValuesList, expectedValues))
|
||||
.isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,6 +143,7 @@ public class JournalEntriesStepDef extends AbstractStepDef {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
|
||||
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanResponse.body().getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
Response<GetLoansLoanIdResponse> loanDetailsResponse = loansApi.retrieveLoan(loanId, false, "transactions", "", "").execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse);
|
||||
@@ -218,7 +221,8 @@ public class JournalEntriesStepDef extends AbstractStepDef {
|
||||
}
|
||||
}
|
||||
assertThat(containsAnyExpected)
|
||||
.as(ErrorMessageHelper.wrongValueInLineInJournalEntries(i, possibleActualValuesList, expectedValues)).isTrue();
|
||||
.as(ErrorMessageHelper.wrongValueInLineInJournalEntries(resourceId, i, possibleActualValuesList, expectedValues))
|
||||
.isTrue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+17
-8
@@ -1298,6 +1298,8 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
public void disburseLoan(String actualDisbursementDate, String transactionAmount) throws IOException {
|
||||
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanResponse.body().getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
PostLoansLoanIdRequest disburseRequest = LoanRequestFactory.defaultLoanDisburseRequest()
|
||||
.actualDisbursementDate(actualDisbursementDate).transactionAmount(new BigDecimal(transactionAmount));
|
||||
|
||||
@@ -1310,7 +1312,7 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
Long statusExpected = Long.valueOf(loanDetails.body().getStatus().getId());
|
||||
|
||||
assertThat(statusActual)//
|
||||
.as(ErrorMessageHelper.wrongLoanStatus(Math.toIntExact(statusActual), Math.toIntExact(statusExpected)))//
|
||||
.as(ErrorMessageHelper.wrongLoanStatus(resourceId, Math.toIntExact(statusActual), Math.toIntExact(statusExpected)))//
|
||||
.isEqualTo(statusExpected);//
|
||||
eventCheckHelper.disburseLoanEventCheck(loanId);
|
||||
eventCheckHelper.loanDisbursalTransactionEventCheck(loanDisburseResponse);
|
||||
@@ -1320,6 +1322,8 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
public void disburseLoanWithoutAutoDownpayment(String actualDisbursementDate, String transactionAmount) throws IOException {
|
||||
Response<PostLoansResponse> loanResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanResponse.body().getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
PostLoansLoanIdRequest disburseRequest = LoanRequestFactory.defaultLoanDisburseRequest()
|
||||
.actualDisbursementDate(actualDisbursementDate).transactionAmount(new BigDecimal(transactionAmount));
|
||||
|
||||
@@ -1333,7 +1337,7 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
Long statusExpected = Long.valueOf(loanDetails.body().getStatus().getId());
|
||||
|
||||
assertThat(statusActual)//
|
||||
.as(ErrorMessageHelper.wrongLoanStatus(Math.toIntExact(statusActual), Math.toIntExact(statusExpected)))//
|
||||
.as(ErrorMessageHelper.wrongLoanStatus(resourceId, Math.toIntExact(statusActual), Math.toIntExact(statusExpected)))//
|
||||
.isEqualTo(statusExpected);//
|
||||
eventCheckHelper.disburseLoanEventCheck(loanId);
|
||||
eventCheckHelper.loanDisbursalTransactionEventCheck(loanDisburseResponse);
|
||||
@@ -1773,6 +1777,7 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
public void loanChargesGivenChargeDataCheck(DataTable table) throws IOException {
|
||||
Response<PostLoansResponse> loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanCreateResponse.body().getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
Response<GetLoansLoanIdResponse> loanDetailsResponse = loansApi.retrieveLoan(loanId, false, "charges", "", "").execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse);
|
||||
@@ -1786,14 +1791,15 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
|
||||
boolean containsExpectedValues = actualValuesList.stream().anyMatch(actualValues -> actualValues.equals(expectedValues));
|
||||
|
||||
assertThat(containsExpectedValues).as(ErrorMessageHelper.wrongValueInLineInChargesTab(1, actualValuesList, expectedValues))
|
||||
.isTrue();
|
||||
assertThat(containsExpectedValues)
|
||||
.as(ErrorMessageHelper.wrongValueInLineInChargesTab(resourceId, 1, actualValuesList, expectedValues)).isTrue();
|
||||
}
|
||||
|
||||
@Then("Loan Charges tab has the following data:")
|
||||
public void loanChargesTabCheck(DataTable table) throws IOException {
|
||||
Response<PostLoansResponse> loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanCreateResponse.body().getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
Response<GetLoansLoanIdResponse> loanDetailsResponse = loansApi.retrieveLoan(loanId, false, "charges", "", "").execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse);
|
||||
@@ -1808,8 +1814,8 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
|
||||
boolean containsExpectedValues = actualValuesList.stream().anyMatch(actualValues -> actualValues.equals(expectedValues));
|
||||
|
||||
assertThat(containsExpectedValues).as(ErrorMessageHelper.wrongValueInLineInChargesTab(i, actualValuesList, expectedValues))
|
||||
.isTrue();
|
||||
assertThat(containsExpectedValues)
|
||||
.as(ErrorMessageHelper.wrongValueInLineInChargesTab(resourceId, i, actualValuesList, expectedValues)).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1846,6 +1852,7 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
public void loanStatus(String statusExpected) throws IOException {
|
||||
Response<PostLoansResponse> loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
|
||||
long loanId = loanCreateResponse.body().getLoanId();
|
||||
String resourceId = String.valueOf(loanId);
|
||||
|
||||
Response<GetLoansLoanIdResponse> loanDetailsResponse = loansApi.retrieveLoan(loanId, false, "", "", "").execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse);
|
||||
@@ -1855,7 +1862,7 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
LoanStatus loanStatusExpected = LoanStatus.valueOf(statusExpected);
|
||||
Integer loanStatusExpectedValue = loanStatusExpected.getValue();
|
||||
|
||||
assertThat(loanStatusActualValue).as(ErrorMessageHelper.wrongLoanStatus(loanStatusActualValue, loanStatusExpectedValue))
|
||||
assertThat(loanStatusActualValue).as(ErrorMessageHelper.wrongLoanStatus(resourceId, loanStatusActualValue, loanStatusExpectedValue))
|
||||
.isEqualTo(loanStatusExpectedValue);
|
||||
}
|
||||
|
||||
@@ -2776,7 +2783,9 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
assertNotNull(loanDetails.body().getStatus());
|
||||
final Long statusExpected = Long.valueOf(loanDetails.body().getStatus().getId());
|
||||
|
||||
assertThat(statusActual).as(ErrorMessageHelper.wrongLoanStatus(Math.toIntExact(statusActual), Math.toIntExact(statusExpected)))
|
||||
String resourceId = String.valueOf(loanId);
|
||||
assertThat(statusActual)
|
||||
.as(ErrorMessageHelper.wrongLoanStatus(resourceId, Math.toIntExact(statusActual), Math.toIntExact(statusExpected)))
|
||||
.isEqualTo(statusExpected);
|
||||
eventCheckHelper.disburseLoanEventCheck(loanId);
|
||||
eventCheckHelper.loanDisbursalTransactionEventCheck(loanDisburseResponse);
|
||||
|
||||
Reference in New Issue
Block a user