package io.ebeanservice.docstore.api.support;
import io.ebean.DocStoreQueueEntry;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebean.plugin.BeanDocType;
import io.ebean.plugin.BeanType;
import io.ebeanservice.docstore.api.DocStoreUpdates;
import org.tests.model.basic.Order;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;
public class DocStoreIndexEventTest {
static EbeanServer server = Ebean.getDefaultServer();
<T> BeanType<T> beanType(Class<T> cls) {
return server.getPluginApi().getBeanType(cls);
}
BeanType<Order> orderType() {
return beanType(Order.class);
}
@Test
@SuppressWarnings("unchecked")
public void docStoreUpdate() throws Exception {
BeanType<Order> mock = (BeanType<Order>) Mockito.mock(BeanType.class);
BeanDocType<Order> mockDocType = (BeanDocType<Order>) Mockito.mock(BeanDocType.class);
when(mock.docStore()).thenReturn(mockDocType);
Order bean = new Order();
DocStoreIndexEvent<Order> event = new DocStoreIndexEvent<>(mock, 42, bean);
event.docStoreUpdate(null);
verify(mock, times(1)).docStore();
verify(mockDocType, times(1)).index(42, bean, null);
}
@Test
public void addToQueue() throws Exception {
Order bean = new Order();
DocStoreIndexEvent<Order> event = new DocStoreIndexEvent<>(orderType(), 42, bean);
DocStoreUpdates updates = new DocStoreUpdates();
event.addToQueue(updates);
List<DocStoreQueueEntry> queueEntries = updates.getQueueEntries();
assertThat(queueEntries).hasSize(1);
DocStoreQueueEntry entry = queueEntries.get(0);
assertThat(entry.getBeanId()).isEqualTo(42);
assertThat(entry.getQueueId()).isEqualTo("order");
assertThat(entry.getPath()).isNull();
assertThat(entry.getType()).isEqualTo(DocStoreQueueEntry.Action.INDEX);
}
}