All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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