package org.molgenis.data.elasticsearch.request;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.index.query.QueryBuilder;
import org.mockito.Matchers;
import org.molgenis.data.Entity;
import org.molgenis.data.Fetch;
import org.molgenis.data.meta.model.EntityType;
import org.molgenis.data.support.QueryImpl;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.mockito.Mockito.*;
public class SearchRequestGeneratorTest
{
private SearchRequestBuilder searchRequestBuilderMock;
private EntityType entityType;
@BeforeMethod
public void beforeMethod()
{
searchRequestBuilderMock = mock(SearchRequestBuilder.class);
entityType = mock(EntityType.class);
}
@Test
public void testBuildSearchRequest()
{
when(entityType.getBackend()).thenReturn("notElasticsearch");
SearchRequestGenerator gen = new SearchRequestGenerator();
String entityName = "test";
SearchType searchType = SearchType.COUNT;
gen.buildSearchRequest(searchRequestBuilderMock, entityName, searchType,
new QueryImpl<Entity>().search("test").fetch(new Fetch().field("field1").field("field2")), null, null,
null, entityType);
verify(searchRequestBuilderMock).setFrom(0);
verify(searchRequestBuilderMock).setSearchType(searchType);
verify(searchRequestBuilderMock).setTypes(entityName);
verify(searchRequestBuilderMock).setQuery(Matchers.<QueryBuilder>anyObject());
verifyNoMoreInteractions(searchRequestBuilderMock);
}
@Test
public void testBuildSearchRequestNoFetch()
{
when(entityType.getBackend()).thenReturn("notElasticsearch");
SearchRequestGenerator gen = new SearchRequestGenerator();
String entityName = "test";
SearchType searchType = SearchType.COUNT;
gen.buildSearchRequest(searchRequestBuilderMock, entityName, searchType, new QueryImpl<>().search("test"), null,
null, null, entityType);
verify(searchRequestBuilderMock).setFrom(0);
verify(searchRequestBuilderMock).setSearchType(searchType);
verify(searchRequestBuilderMock).setTypes(entityName);
verify(searchRequestBuilderMock).setQuery(Matchers.<QueryBuilder>anyObject());
verifyNoMoreInteractions(searchRequestBuilderMock);
}
}