FINERACT-1724: Optimizing the account locking for Loan COB

This commit is contained in:
Arnold Galovics
2023-03-28 14:45:04 +02:00
committed by Arnold Gálovics
parent f0d2e9326d
commit dbfedf5cfd
3 changed files with 38 additions and 13 deletions
@@ -20,7 +20,9 @@ package org.apache.fineract.cob.loan;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -43,6 +45,7 @@ import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.jdbc.core.JdbcTemplate;
public class FetchAndLockLoanStepDefinitions implements En {
@@ -56,6 +59,7 @@ public class FetchAndLockLoanStepDefinitions implements En {
private FetchAndLockLoanTasklet fetchAndLockLoanTasklet;
private String action;
private RepeatStatus result;
private JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
public FetchAndLockLoanStepDefinitions() {
Given("/^The FetchAndLockLoanTasklet.execute method with action (.*)$/", (String action) -> {
@@ -97,7 +101,8 @@ public class FetchAndLockLoanStepDefinitions implements En {
contribution = new StepContribution(stepExecution);
contribution.getStepExecution().getJobExecution().getExecutionContext().put(LoanCOBConstant.BUSINESS_DATE_PARAMETER_NAME,
LocalDate.now(ZoneId.systemDefault()).toString());
fetchAndLockLoanTasklet = new FetchAndLockLoanTasklet(loanAccountLockRepository, retrieveLoanIdService, fineractProperties);
fetchAndLockLoanTasklet = new FetchAndLockLoanTasklet(loanAccountLockRepository, retrieveLoanIdService, fineractProperties,
jdbcTemplate);
});
When("FetchAndLockLoanTasklet.execute method executed", () -> {
@@ -108,7 +113,7 @@ public class FetchAndLockLoanStepDefinitions implements En {
if ("empty steps".equals(action)) {
assertEquals(RepeatStatus.FINISHED, result);
} else if ("good".equals(action)) {
verify(loanAccountLockRepository, Mockito.times(3)).save(Mockito.any());
verify(jdbcTemplate).batchUpdate(anyString(), any(), anyInt(), any());
assertEquals(RepeatStatus.FINISHED, result);
assertEquals(3,
((List) contribution.getStepExecution().getJobExecution().getExecutionContext().get(LoanCOBConstant.LOAN_IDS))
@@ -123,7 +128,7 @@ public class FetchAndLockLoanStepDefinitions implements En {
((List) contribution.getStepExecution().getJobExecution().getExecutionContext().get(LoanCOBConstant.LOAN_IDS))
.get(2));
} else if ("soft lock".equals(action)) {
verify(loanAccountLockRepository, Mockito.times(2)).save(Mockito.any());
verify(jdbcTemplate).batchUpdate(anyString(), any(), anyInt(), any());
assertEquals(RepeatStatus.FINISHED, result);
assertEquals(3,
((List) contribution.getStepExecution().getJobExecution().getExecutionContext().get(LoanCOBConstant.LOAN_IDS))
@@ -138,7 +143,7 @@ public class FetchAndLockLoanStepDefinitions implements En {
((List) contribution.getStepExecution().getJobExecution().getExecutionContext().get(LoanCOBConstant.LOAN_IDS))
.get(2));
} else if ("inline cob".equals(action)) {
verify(loanAccountLockRepository, Mockito.times(2)).save(Mockito.any());
verify(jdbcTemplate).batchUpdate(anyString(), any(), anyInt(), any());
assertEquals(RepeatStatus.FINISHED, result);
assertEquals(2,
((List) contribution.getStepExecution().getJobExecution().getExecutionContext().get(LoanCOBConstant.LOAN_IDS))
@@ -150,7 +155,7 @@ public class FetchAndLockLoanStepDefinitions implements En {
((List) contribution.getStepExecution().getJobExecution().getExecutionContext().get(LoanCOBConstant.LOAN_IDS))
.get(1));
} else if ("chunk processing".equals(action)) {
verify(loanAccountLockRepository, Mockito.times(2)).save(Mockito.any());
verify(jdbcTemplate).batchUpdate(anyString(), any(), anyInt(), any());
assertEquals(RepeatStatus.FINISHED, result);
assertEquals(2,
((List) contribution.getStepExecution().getJobExecution().getExecutionContext().get(LoanCOBConstant.LOAN_IDS))