You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ar...@apache.org on 2021/02/17 08:11:25 UTC
[metamodel] 04/05: METAMODEL-1233: JUnit tests were extended.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit 2f31f6ec923a860aa66b29165ecbc5dfc4c84d4f
Author: jakub <j....@quadient.com>
AuthorDate: Tue Feb 16 15:08:40 2021 +0100
METAMODEL-1233: JUnit tests were extended.
---
.../common/ElasticSearchUtilsTest.java | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/elasticsearch/common/src/test/java/org/apache/metamodel/elasticsearch/common/ElasticSearchUtilsTest.java b/elasticsearch/common/src/test/java/org/apache/metamodel/elasticsearch/common/ElasticSearchUtilsTest.java
index 4d18b27..923ae9e 100644
--- a/elasticsearch/common/src/test/java/org/apache/metamodel/elasticsearch/common/ElasticSearchUtilsTest.java
+++ b/elasticsearch/common/src/test/java/org/apache/metamodel/elasticsearch/common/ElasticSearchUtilsTest.java
@@ -33,6 +33,8 @@ import org.apache.metamodel.query.OperatorType;
import org.apache.metamodel.query.SelectItem;
import org.apache.metamodel.schema.ColumnType;
import org.apache.metamodel.schema.MutableColumn;
+import org.elasticsearch.common.xcontent.XContentHelper;
+import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilder;
import junit.framework.TestCase;
@@ -78,6 +80,7 @@ public class ElasticSearchUtilsTest extends TestCase {
final FilterItem filterItem = new FilterItem(selectItem, OperatorType.EQUALS_TO, "text-value");
final QueryBuilder queryBuilder =
ElasticSearchUtils.createQueryBuilderForSimpleWhere(Collections.singletonList(filterItem), null);
+ assertNotNull(queryBuilder);
assertEquals("match", queryBuilder.getName());
}
@@ -85,24 +88,46 @@ public class ElasticSearchUtilsTest extends TestCase {
* For text-based conditions a 'match' query is recommended (instead of 'term' query).
* In case of 'DIFFERENT_FROM', we need a 'bool' query with 'must not' and 'match' query.
*/
+ @SuppressWarnings("unchecked")
public void testBoolQueryIsCreatedForTextDifferentFrom() {
final SelectItem selectItem = new SelectItem(new MutableColumn("column_name", ColumnType.STRING));
final FilterItem filterItem = new FilterItem(selectItem, OperatorType.DIFFERENT_FROM, "text-value");
final QueryBuilder queryBuilder =
ElasticSearchUtils.createQueryBuilderForSimpleWhere(Collections.singletonList(filterItem), null);
+ assertNotNull(queryBuilder);
assertEquals("bool", queryBuilder.getName());
+ final Map<String, Object> queryMap =
+ XContentHelper.convertToMap(XContentType.JSON.xContent(), queryBuilder.toString(), false);
+ final Map<String, Object> boolMap = (Map<String, Object>) queryMap.get("bool");
+ assertNotNull(boolMap);
+ assertTrue(boolMap.containsKey("must_not"));
+ final List<Object> mustNotList = (List<Object>) boolMap.get("must_not");
+ final Map<String, Object> mustNotMap = (Map<String, Object>) mustNotList.get(0);
+ assertTrue(mustNotMap.containsKey("match"));
}
/**
* For text-based conditions a 'match' query is recommended (instead of 'term' query).
* To simulate 'IN' operator, we need a 'bool' query with multiple 'match' queries combined with 'OR'.
*/
+ @SuppressWarnings("unchecked")
public void testBoolQueryIsCreatedForTextIn() {
final SelectItem selectItem = new SelectItem(new MutableColumn("column_name", ColumnType.STRING));
final FilterItem filterItem =
new FilterItem(selectItem, OperatorType.IN, Arrays.asList("text-value-a", "text-value-b"));
final QueryBuilder queryBuilder =
ElasticSearchUtils.createQueryBuilderForSimpleWhere(Collections.singletonList(filterItem), null);
+ assertNotNull(queryBuilder);
assertEquals("bool", queryBuilder.getName());
+ final Map<String, Object> queryMap =
+ XContentHelper.convertToMap(XContentType.JSON.xContent(), queryBuilder.toString(), false);
+ final Map<String, Object> matchMap = (Map<String, Object>) queryMap.get("bool");
+ assertNotNull(matchMap);
+ assertTrue(matchMap.containsKey("should"));
+ final List<Object> shouldList = (List<Object>) matchMap.get("should");
+ assertNotNull(shouldList);
+ assertEquals(2, shouldList.size());
+ assertTrue(((Map<String, Object>)shouldList.get(0)).containsKey("match"));
+ assertTrue(((Map<String, Object>)shouldList.get(1)).containsKey("match"));
}
}