FINERACT-2389: Fix the handling of nullable field overrides - E2E tests
This commit is contained in:
+80
@@ -714,6 +714,12 @@ public class LoanStepDef extends AbstractStepDef {
|
|||||||
createFullyCustomizedLoanWithInterestRateFrequency(data.get(1));
|
createFullyCustomizedLoanWithInterestRateFrequency(data.get(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@When("Admin creates a fully customized loan with graceOnArrearsAgeing and following data:")
|
||||||
|
public void createFullyCustomizedLoanWithGraceOnArrearsAgeing(final DataTable table) throws IOException {
|
||||||
|
final List<List<String>> data = table.asLists();
|
||||||
|
createFullyCustomizedLoanWithGraceOnArrearsAgeing(data.get(1));
|
||||||
|
}
|
||||||
|
|
||||||
@When("Admin creates a fully customized loan with charges and following data:")
|
@When("Admin creates a fully customized loan with charges and following data:")
|
||||||
public void createFullyCustomizedLoanWithLoanCharges(final DataTable table) throws IOException {
|
public void createFullyCustomizedLoanWithLoanCharges(final DataTable table) throws IOException {
|
||||||
final List<List<String>> data = table.asLists();
|
final List<List<String>> data = table.asLists();
|
||||||
@@ -3758,6 +3764,80 @@ public class LoanStepDef extends AbstractStepDef {
|
|||||||
eventCheckHelper.createLoanEventCheck(response);
|
eventCheckHelper.createLoanEventCheck(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void createFullyCustomizedLoanWithGraceOnArrearsAgeing(final List<String> loanData) throws IOException {
|
||||||
|
final String loanProduct = loanData.get(0);
|
||||||
|
final String submitDate = loanData.get(1);
|
||||||
|
final String principal = loanData.get(2);
|
||||||
|
final BigDecimal interestRate = new BigDecimal(loanData.get(3));
|
||||||
|
final String interestTypeStr = loanData.get(4);
|
||||||
|
final String interestCalculationPeriodStr = loanData.get(5);
|
||||||
|
final String amortizationTypeStr = loanData.get(6);
|
||||||
|
final Integer loanTermFrequency = Integer.valueOf(loanData.get(7));
|
||||||
|
final String loanTermFrequencyType = loanData.get(8);
|
||||||
|
final Integer repaymentFrequency = Integer.valueOf(loanData.get(9));
|
||||||
|
final String repaymentFrequencyTypeStr = loanData.get(10);
|
||||||
|
final Integer numberOfRepayments = Integer.valueOf(loanData.get(11));
|
||||||
|
final Integer graceOnPrincipalPayment = Integer.valueOf(loanData.get(12));
|
||||||
|
final Integer graceOnInterestPayment = Integer.valueOf(loanData.get(13));
|
||||||
|
final Integer graceOnInterestCharged = Integer.valueOf(loanData.get(14));
|
||||||
|
final String transactionProcessingStrategyCode = loanData.get(15);
|
||||||
|
final String graceOnArrearsAgeingStr = loanData.get(16);
|
||||||
|
|
||||||
|
final Response<PostClientsResponse> clientResponse = testContext().get(TestContextKey.CLIENT_CREATE_RESPONSE);
|
||||||
|
final Long clientId = clientResponse.body().getClientId();
|
||||||
|
|
||||||
|
final DefaultLoanProduct product = DefaultLoanProduct.valueOf(loanProduct);
|
||||||
|
final Long loanProductId = loanProductResolver.resolve(product);
|
||||||
|
|
||||||
|
final LoanTermFrequencyType termFrequencyType = LoanTermFrequencyType.valueOf(loanTermFrequencyType);
|
||||||
|
final Integer loanTermFrequencyTypeValue = termFrequencyType.getValue();
|
||||||
|
|
||||||
|
final RepaymentFrequencyType repaymentFrequencyType = RepaymentFrequencyType.valueOf(repaymentFrequencyTypeStr);
|
||||||
|
final Integer repaymentFrequencyTypeValue = repaymentFrequencyType.getValue();
|
||||||
|
|
||||||
|
final InterestType interestType = InterestType.valueOf(interestTypeStr);
|
||||||
|
final Integer interestTypeValue = interestType.getValue();
|
||||||
|
|
||||||
|
final InterestCalculationPeriodTime interestCalculationPeriod = InterestCalculationPeriodTime.valueOf(interestCalculationPeriodStr);
|
||||||
|
final Integer interestCalculationPeriodValue = interestCalculationPeriod.getValue();
|
||||||
|
|
||||||
|
final AmortizationType amortizationType = AmortizationType.valueOf(amortizationTypeStr);
|
||||||
|
final Integer amortizationTypeValue = amortizationType.getValue();
|
||||||
|
|
||||||
|
final TransactionProcessingStrategyCode processingStrategyCode = TransactionProcessingStrategyCode
|
||||||
|
.valueOf(transactionProcessingStrategyCode);
|
||||||
|
final String transactionProcessingStrategyCodeValue = processingStrategyCode.getValue();
|
||||||
|
|
||||||
|
Integer graceOnArrearsAgeingValue = Integer.valueOf(graceOnArrearsAgeingStr);
|
||||||
|
|
||||||
|
final PostLoansRequest loansRequest = loanRequestFactory//
|
||||||
|
.defaultLoansRequest(clientId)//
|
||||||
|
.productId(loanProductId)//
|
||||||
|
.principal(new BigDecimal(principal))//
|
||||||
|
.interestRatePerPeriod(interestRate)//
|
||||||
|
.interestType(interestTypeValue)//
|
||||||
|
.interestCalculationPeriodType(interestCalculationPeriodValue)//
|
||||||
|
.amortizationType(amortizationTypeValue)//
|
||||||
|
.loanTermFrequency(loanTermFrequency)//
|
||||||
|
.loanTermFrequencyType(loanTermFrequencyTypeValue)//
|
||||||
|
.numberOfRepayments(numberOfRepayments)//
|
||||||
|
.repaymentEvery(repaymentFrequency)//
|
||||||
|
.repaymentFrequencyType(repaymentFrequencyTypeValue)//
|
||||||
|
.submittedOnDate(submitDate)//
|
||||||
|
.expectedDisbursementDate(submitDate)//
|
||||||
|
.graceOnPrincipalPayment(graceOnPrincipalPayment)//
|
||||||
|
.graceOnInterestPayment(graceOnInterestPayment)//
|
||||||
|
.graceOnInterestPayment(graceOnInterestCharged)//
|
||||||
|
.transactionProcessingStrategyCode(transactionProcessingStrategyCodeValue)//
|
||||||
|
.graceOnArrearsAgeing(graceOnArrearsAgeingValue);//
|
||||||
|
|
||||||
|
final Response<PostLoansResponse> response = loansApi.calculateLoanScheduleOrSubmitLoanApplication(loansRequest, "").execute();
|
||||||
|
testContext().set(TestContextKey.LOAN_CREATE_RESPONSE, response);
|
||||||
|
ErrorHelper.checkSuccessfulApiCall(response);
|
||||||
|
|
||||||
|
eventCheckHelper.createLoanEventCheck(response);
|
||||||
|
}
|
||||||
|
|
||||||
public void createFullyCustomizedLoanWithCharges(final List<String> loanData) throws IOException {
|
public void createFullyCustomizedLoanWithCharges(final List<String> loanData) throws IOException {
|
||||||
final String loanProduct = loanData.get(0);
|
final String loanProduct = loanData.get(0);
|
||||||
final String submitDate = loanData.get(1);
|
final String submitDate = loanData.get(1);
|
||||||
|
|||||||
@@ -2144,3 +2144,35 @@ Feature: LoanDelinquency
|
|||||||
| 3 | RANGE_30 | 125.00 |
|
| 3 | RANGE_30 | 125.00 |
|
||||||
| 4 | RANGE_60 | 375.00 |
|
| 4 | RANGE_60 | 375.00 |
|
||||||
| 5 | RANGE_90 | 250.00 |
|
| 5 | RANGE_90 | 250.00 |
|
||||||
|
|
||||||
|
@TestRailId:C4140
|
||||||
|
Scenario: Verify that loan delinquent days are correct when graceOnArrearsAgeing is set on loan product level (value=3)
|
||||||
|
When Admin sets the business date to "01 January 2025"
|
||||||
|
And Admin creates a client with random data
|
||||||
|
And Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_PROGRESSIVE_ADVANCED_PAYMENT_ALLOCATION_BUYDOWN_FEES | 01 January 2025 | 1000 | 0 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2025" with "1000" amount and expected disbursement date on "01 January 2025"
|
||||||
|
And Admin successfully disburse the loan on "01 January 2025" with "1000" EUR transaction amount
|
||||||
|
And Admin sets the business date to "15 May 2025"
|
||||||
|
And Admin runs inline COB job for Loan
|
||||||
|
Then Admin checks that delinquency range is: "RANGE_90" and has delinquentDate "2025-02-04"
|
||||||
|
And Loan has the following LOAN level delinquency data:
|
||||||
|
| classification | delinquentAmount | delinquentDate | delinquentDays | pastDueDays |
|
||||||
|
| RANGE_90 | 666.68 | 04 February 2025 | 100 | 103 |
|
||||||
|
|
||||||
|
@TestRailId:C4141
|
||||||
|
Scenario: Verify that loan delinquent days are correct when graceOnArrearsAgeing is overrided on loan level (value=5)
|
||||||
|
When Admin sets the business date to "01 January 2025"
|
||||||
|
And Admin creates a client with random data
|
||||||
|
And Admin creates a fully customized loan with graceOnArrearsAgeing and following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy | graceOnArrearsAgeing |
|
||||||
|
| LP2_PROGRESSIVE_ADVANCED_PAYMENT_ALLOCATION_BUYDOWN_FEES | 01 January 2025 | 1000 | 0 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION | 5 |
|
||||||
|
And Admin successfully approves the loan on "01 January 2025" with "1000" amount and expected disbursement date on "01 January 2025"
|
||||||
|
And Admin successfully disburse the loan on "01 January 2025" with "1000" EUR transaction amount
|
||||||
|
And Admin sets the business date to "15 May 2025"
|
||||||
|
And Admin runs inline COB job for Loan
|
||||||
|
Then Admin checks that delinquency range is: "RANGE_90" and has delinquentDate "2025-02-06"
|
||||||
|
And Loan has the following LOAN level delinquency data:
|
||||||
|
| classification | delinquentAmount | delinquentDate | delinquentDays | pastDueDays |
|
||||||
|
| RANGE_90 | 666.68 | 06 February 2025 | 98 | 103 |
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
@LoanOverrideFields
|
@LoanOverrideFields
|
||||||
Feature: LoanOverrideFields
|
Feature: LoanOverrideFields
|
||||||
|
|
||||||
|
@TestRailId:C4142
|
||||||
Scenario: Verify that all nullable fields default to product when overrides not allowed and not provided
|
Scenario: Verify that all nullable fields default to product when overrides not allowed and not provided
|
||||||
When Admin sets the business date to the actual date
|
When Admin sets the business date to the actual date
|
||||||
When Admin creates a client with random data
|
When Admin creates a client with random data
|
||||||
@@ -15,6 +16,7 @@ Feature: LoanOverrideFields
|
|||||||
Then LoanDetails has "graceOnInterestPayment" field with value: "1"
|
Then LoanDetails has "graceOnInterestPayment" field with value: "1"
|
||||||
Then LoanDetails has "graceOnArrearsAgeing" field with value: "3"
|
Then LoanDetails has "graceOnArrearsAgeing" field with value: "3"
|
||||||
|
|
||||||
|
@TestRailId:C4143
|
||||||
Scenario: Verify that all nullable fields ignore overrides when overrides not allowed
|
Scenario: Verify that all nullable fields ignore overrides when overrides not allowed
|
||||||
When Admin sets the business date to the actual date
|
When Admin sets the business date to the actual date
|
||||||
When Admin creates a client with random data
|
When Admin creates a client with random data
|
||||||
@@ -29,6 +31,7 @@ Feature: LoanOverrideFields
|
|||||||
Then LoanDetails has "graceOnInterestPayment" field with value: "1"
|
Then LoanDetails has "graceOnInterestPayment" field with value: "1"
|
||||||
Then LoanDetails has "graceOnArrearsAgeing" field with value: "3"
|
Then LoanDetails has "graceOnArrearsAgeing" field with value: "3"
|
||||||
|
|
||||||
|
@TestRailId:C4144
|
||||||
Scenario: Verify that nullable fields default to product when override is allowed but not provided
|
Scenario: Verify that nullable fields default to product when override is allowed but not provided
|
||||||
When Admin sets the business date to the actual date
|
When Admin sets the business date to the actual date
|
||||||
When Admin creates a client with random data
|
When Admin creates a client with random data
|
||||||
@@ -43,6 +46,7 @@ Feature: LoanOverrideFields
|
|||||||
Then LoanDetails has "graceOnInterestPayment" field with value: "1"
|
Then LoanDetails has "graceOnInterestPayment" field with value: "1"
|
||||||
Then LoanDetails has "graceOnArrearsAgeing" field with value: "3"
|
Then LoanDetails has "graceOnArrearsAgeing" field with value: "3"
|
||||||
|
|
||||||
|
@TestRailId:C4145
|
||||||
Scenario: Verify that nullable fields default to product when override is allowed and provided
|
Scenario: Verify that nullable fields default to product when override is allowed and provided
|
||||||
When Admin sets the business date to the actual date
|
When Admin sets the business date to the actual date
|
||||||
When Admin creates a client with random data
|
When Admin creates a client with random data
|
||||||
|
|||||||
Reference in New Issue
Block a user