
com.networknt.eventuate.test.util.MockEventHandlerContextInternal Maven / Gradle / Ivy
package com.networknt.eventuate.test.util;
import com.networknt.eventuate.common.*;
import org.mockito.ArgumentCaptor;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
public class MockEventHandlerContextInternal, CT extends Command, E extends Event> {
public EventHandlerContext mock = org.mockito.Mockito.mock(EventHandlerContext.class);
private Class aggregateClass;
private String fromEntityId;
private E event;
private Int128 eventId;
private Class eventType;
public MockEventHandlerContextInternal(Class aggregateClass) {
this.aggregateClass = aggregateClass;
}
public MockEventHandlerContextInternal withFromEntityId(String fromEntityId) {
this.fromEntityId = fromEntityId;
return this;
}
public MockEventHandlerContextInternal withEvent(E event) {
this.event = event;
return this;
}
public MockEventHandlerContextInternal withEventId(Int128 eventId) {
this.eventId = eventId;
return this;
}
public MockEventHandlerContextInternal withEventType(Class eventType) {
this.eventType = eventType;
return this;
}
public AggregateOperationInvocation whenUpdate(String entityId, Class commandClass) {
ArgumentCaptor commandArg = ArgumentCaptor.forClass(commandClass);
EntityWithIdAndVersion updatedEntity = new EntityWithIdAndVersion<>(null, null);
when(mock.getEntityId()).thenReturn(fromEntityId);
when(mock.getEvent()).thenReturn(event);
when(mock.getEventId()).thenReturn(eventId);
when(mock.getEventType()).thenReturn(eventType);
when(mock.update(eq(aggregateClass), eq(entityId), commandArg.capture())).thenReturn(CompletableFuture.completedFuture(updatedEntity));
return new UpdateInvocation<>(commandArg, updatedEntity);
}
public SaveInvocation whenSave(Class commandClass, Optional entityId) {
ArgumentCaptor commandArg = ArgumentCaptor.forClass(commandClass);
EntityWithIdAndVersion createdEntity = new EntityWithIdAndVersion<>(null, null);
when(mock.getEntityId()).thenReturn(fromEntityId);
when(mock.getEvent()).thenReturn(event);
when(mock.getEventId()).thenReturn(eventId);
when(mock.getEventType()).thenReturn(eventType);
when(mock.save(eq(aggregateClass), commandArg.capture(), eq(entityId))).thenReturn(CompletableFuture.completedFuture(createdEntity));
return new SaveInvocation<>(commandArg, createdEntity);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy