package de.nava.mlsample.service; import com.marklogic.client.extra.jackson.JacksonHandle; import com.marklogic.client.io.Format; import com.marklogic.client.io.StringHandle; import com.marklogic.client.query.QueryManager; import com.marklogic.client.query.RawCombinedQueryDefinition; import de.nava.mlsample.MarkLogicSampleApplication; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.FileCopyUtils; import java.io.FileReader; import java.io.IOException; import static org.junit.Assert.assertEquals; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = MarkLogicSampleApplication.class) public class ProductRepositoryJSONIT { public static final String COLLECTION_REF = "/products.json"; @Autowired protected QueryManager queryManager; @Test public void thatFindWithDynamicQueryOptionsReturnsValidResponse() throws IOException { String optionsStr = FileCopyUtils.copyToString( new FileReader("src/main/xqy/options/price-year.json")); // construct query StringHandle rawHandle = new StringHandle(); rawHandle.withFormat(Format.JSON).set(optionsStr); RawCombinedQueryDefinition queryDef = queryManager.newRawCombinedQueryDefinition(rawHandle); queryDef.setCollections(COLLECTION_REF); JacksonHandle resultsHandle = new JacksonHandle(); queryManager.setPageLength(10); queryManager.search(queryDef, resultsHandle); int start = resultsHandle.get().get("start").intValue(); assertEquals("Start should be 1", 1, start); } }