package org.vertexium.elasticsearch; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.vertexium.Authorizations; import org.vertexium.Graph; import org.vertexium.GraphWithSearchIndex; import org.vertexium.Vertex; import org.vertexium.inmemory.InMemoryAuthorizations; import org.vertexium.inmemory.InMemoryGraph; import org.vertexium.inmemory.InMemoryGraphConfiguration; import org.vertexium.query.QueryResultsIterable; import org.vertexium.query.SortDirection; import org.vertexium.test.GraphTestBase; import static org.vertexium.util.IterableUtils.count; public abstract class ElasticsearchSingleDocumentSearchIndexTestBase extends GraphTestBase { @Before @Override public void before() throws Exception { getElasticsearchResource().dropIndices(); super.before(); } @Override protected Graph createGraph() throws Exception { return InMemoryGraph.create(new InMemoryGraphConfiguration(getElasticsearchResource().createConfig())); } protected abstract ElasticsearchResource getElasticsearchResource(); @Override protected Authorizations createAuthorizations(String... auths) { return new InMemoryAuthorizations(auths); } @Override protected boolean disableEdgeIndexing(Graph graph) { return getElasticsearchResource().disableEdgeIndexing(graph); } private ElasticsearchSingleDocumentSearchIndex getSearchIndex() { return (ElasticsearchSingleDocumentSearchIndex) ((GraphWithSearchIndex) graph).getSearchIndex(); } @Override protected boolean isLuceneQueriesSupported() { return true; } @Test @Override public void testGraphQuerySortOnPropertyThatHasNoValuesInTheIndex() { super.testGraphQuerySortOnPropertyThatHasNoValuesInTheIndex(); getSearchIndex().clearIndexInfoCache(); QueryResultsIterable<Vertex> vertices = graph.query(AUTHORIZATIONS_A).sort("age", SortDirection.ASCENDING).vertices(); Assert.assertEquals(2, count(vertices)); } }