FINERACT-2081: fix tests event check to use latest relevant event

This commit is contained in:
adam.magyari
2025-02-25 11:11:26 +01:00
committed by Adam Saghy
parent 6821b50ed6
commit e542ca6870
2 changed files with 10 additions and 3 deletions
@@ -56,7 +56,7 @@ public class EventStore {
public <R, T extends Event<R>> Optional<EventMessage<R>> findEventById(T type, Long id) {
List<EventMessage<R>> events = findByType(type);
return events.stream().filter(em -> type.getIdExtractor().apply(em.getData()).equals(id)).findFirst();
return events.stream().filter(em -> type.getIdExtractor().apply(em.getData()).equals(id)).reduce((first, second) -> second);
}
public <R, T extends Event<R>> List<EventMessage<R>> findByType(T type) {
@@ -118,6 +118,7 @@ import org.apache.fineract.test.helper.ErrorResponse;
import org.apache.fineract.test.helper.Utils;
import org.apache.fineract.test.initializer.global.LoanProductGlobalInitializerStep;
import org.apache.fineract.test.messaging.EventAssertion;
import org.apache.fineract.test.messaging.config.EventProperties;
import org.apache.fineract.test.messaging.event.EventCheckHelper;
import org.apache.fineract.test.messaging.event.loan.LoanRescheduledDueAdjustScheduleEvent;
import org.apache.fineract.test.messaging.event.loan.LoanStatusChangedEvent;
@@ -189,6 +190,9 @@ public class LoanStepDef extends AbstractStepDef {
@Autowired
private LoanInterestPauseApi loanInterestPauseApi;
@Autowired
private EventProperties eventProperties;
@When("Admin creates a new Loan")
public void createLoan() throws IOException {
Response<PostClientsResponse> clientResponse = testContext().get(TestContextKey.CLIENT_CREATE_RESPONSE);
@@ -2233,8 +2237,11 @@ public class LoanStepDef extends AbstractStepDef {
long loanId = loanResponse.body().getLoanId();
LoanStatusEnumDataV1 expectedStatus = getExpectedStatus(loanStatus);
eventAssertion.assertEvent(LoanStatusChangedEvent.class, loanId).extractingData(LoanAccountDataV1::getStatus)
.isEqualTo(expectedStatus);
await().pollDelay(Duration.ofSeconds(1L)).pollInterval(Duration.ofSeconds(1L))
.atMost(Duration.ofSeconds(eventProperties.getEventWaitTimeoutInSec())).untilAsserted(() -> {
eventAssertion.assertEvent(LoanStatusChangedEvent.class, loanId).extractingData(LoanAccountDataV1::getStatus)
.isEqualTo(expectedStatus);
});
}
@Then("Loan marked as charged-off on {string}")