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"));
     }
 }