package de.danielbasedow.prospecter.core;
import de.danielbasedow.prospecter.core.document.Document;
import de.danielbasedow.prospecter.core.schema.Schema;
import de.danielbasedow.prospecter.core.schema.SchemaBuilder;
import de.danielbasedow.prospecter.core.schema.SchemaBuilderJSON;
import de.danielbasedow.prospecter.core.schema.SchemaConfigurationError;
import junit.framework.TestCase;
public class OrQueryTest extends TestCase {
protected final String schemaJSON = "{\n" +
" \"fields\": {\n" +
" \"price\": {\n" +
" \"type\": \"Integer\"\n" +
" },\n" +
" \"category\": {\n" +
" \"type\": \"String\"\n" +
" }\n" +
" }\n" +
"}";
public void test() throws SchemaConfigurationError, MalformedQueryException, UndefinedIndexFieldException {
SchemaBuilder schemaBuilder = new SchemaBuilderJSON(schemaJSON);
Schema schema = schemaBuilder.getSchema();
schema.addQuery("{\n" +
" \"id\": 123456,\n" +
" \"query\": {\n" +
" \"or\": [\n" +
" {\n" +
" \"field\": \"category\",\n" +
" \"condition\": \"eq\",\n" +
" \"value\": \"bargain\"\n" +
" },\n" +
" {\n" +
" \"field\": \"price\",\n" +
" \"condition\": \"lt\",\n" +
" \"value\": 500000\n" +
" }\n" +
" ]\n" +
" }\n" +
"}");
Document doc = schema.getDocumentBuilder().build("{\"category\": \"foo\"}");
Matcher matcher = schema.matchDocument(doc);
assertEquals(0, matcher.getMatchedQueries().size());
doc = schema.getDocumentBuilder().build("{\"category\": \"bargain\"}");
matcher = schema.matchDocument(doc);
assertEquals(1, matcher.getMatchedQueries().size());
doc = schema.getDocumentBuilder().build("{\"price\": 500001}");
matcher = schema.matchDocument(doc);
assertEquals(0, matcher.getMatchedQueries().size());
doc = schema.getDocumentBuilder().build("{\"price\": 499999}");
matcher = schema.matchDocument(doc);
assertEquals(1, matcher.getMatchedQueries().size());
doc = schema.getDocumentBuilder().build("{\"price\": 499999, \"category\": \"bargain\"}");
matcher = schema.matchDocument(doc);
assertEquals(1, matcher.getMatchedQueries().size());
doc = schema.getDocumentBuilder().build("{\"price\": 500001, \"category\": \"bargain\"}");
matcher = schema.matchDocument(doc);
assertEquals(1, matcher.getMatchedQueries().size());
doc = schema.getDocumentBuilder().build("{\"price\": 500001, \"category\": \"foo\"}");
matcher = schema.matchDocument(doc);
assertEquals(0, matcher.getMatchedQueries().size());
doc = schema.getDocumentBuilder().build("{\"price\": 499999, \"category\": \"foo\"}");
matcher = schema.matchDocument(doc);
assertEquals(1, matcher.getMatchedQueries().size());
}
}