Author: rombert
Date: Mon Oct 2 20:46:19 2017
New Revision: 1810598
URL: http://svn.apache.org/viewvc?rev=1810598&view=rev
Log:
samples/mail-archive - fix tests
Ensure a consistent order of the fields in the query
Modified:
sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java
Modified:
sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java?rev=1810598&r1=1810597&r2=1810598&view=diff
==============================================================================
---
sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java
(original)
+++
sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java
Mon Oct 2 20:46:19 2017
@@ -21,6 +21,8 @@ package org.apache.sling.mailarchiveserv
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -96,7 +98,7 @@ public class SearchQueryParserImpl imple
}
public static final Set<String> SEARCH_PARAMETERES = new
HashSet<String>();
- public static final Set<String> MESSAGE_FIELDS = new HashSet<String>();
+ public static final Set<String> MESSAGE_FIELDS = new
LinkedHashSet<String>();
public static final Map<String, String>
SEARCH_PARAMETER_TO_MESSAGE_FIELD_MAP = new HashMap<String, String>();
static {
Modified:
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java?rev=1810598&r1=1810597&r2=1810598&view=diff
==============================================================================
---
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java
(original)
+++
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java
Mon Oct 2 20:46:19 2017
@@ -44,74 +44,73 @@ public class SearchServiceTest {
params.add(new Object[] {"blank search field", "",
QueryBuilderImpl.BASE } );
params.add(new Object[] {"one word", "word",
QueryBuilderImpl.BASE + " AND "
- + "(LOWER(Body) LIKE '%word%' "
+ + "(LOWER(From) LIKE '%word%' "
+ "OR LOWER(Subject) LIKE '%word%' "
+ "OR LOWER('List-Id') LIKE '%word%' "
- + "OR LOWER(From) LIKE '%word%')"
+ + "OR LOWER(Body) LIKE '%word%')"
} );
// TODO logically this is true, practically order by score
because
params.add(new Object[] {"two words", "hello word",
QueryBuilderImpl.BASE + " AND "
- + "(LOWER(Body) LIKE '%hello%' "
- + "OR LOWER(Body) LIKE '%word%' "
+ + "(LOWER(From) LIKE '%hello%' "
+ + "OR LOWER(From) LIKE '%word%' "
+ "OR LOWER(Subject) LIKE '%hello%' "
+ "OR LOWER(Subject) LIKE '%word%' "
+ "OR LOWER('List-Id') LIKE '%hello%' "
+ "OR LOWER('List-Id') LIKE '%word%' "
- + "OR LOWER(From) LIKE '%hello%' "
- + "OR LOWER(From) LIKE '%word%')"
+ + "OR LOWER(Body) LIKE '%hello%' "
+ + "OR LOWER(Body) LIKE '%word%')"
} );
params.add(new Object[] {"field search", "hello from:world",
QueryBuilderImpl.BASE + " AND "
+ "(LOWER(From) LIKE '%world%') "
- + "AND (LOWER(Body) LIKE '%hello%' "
+ + "AND (LOWER(From) LIKE '%hello%' "
+ "OR LOWER(Subject) LIKE '%hello%' "
+ "OR LOWER('List-Id') LIKE '%hello%' "
- + "OR LOWER(From) LIKE '%hello%')"
+ + "OR LOWER(Body) LIKE '%hello%')"
} );
params.add(new Object[] {"caps", "SuBjecT:HeRE THeRe",
QueryBuilderImpl.BASE + " AND "
+ "(LOWER(Subject) LIKE '%here%') "
- + "AND (LOWER(Body) LIKE '%there%' "
+ + "AND (LOWER(From) LIKE '%there%' "
+ "OR LOWER(Subject) LIKE '%there%' "
+ "OR LOWER('List-Id') LIKE '%there%' "
- + "OR LOWER(From) LIKE '%there%')"
+ + "OR LOWER(Body) LIKE '%there%')"
} );
params.add(new Object[] {"non-existent field", "FROM:me
list:public about:stuff", QueryBuilderImpl.BASE + " AND "
- + "(LOWER('List-Id') LIKE '%public%') "
- + "AND (LOWER(From) LIKE '%me%')"
+ + "(LOWER(From) LIKE '%me%') "
+ + "AND (LOWER('List-Id') LIKE '%public%')"
} );
params.add(new Object[] {"just non-existent field", "frome:e",
QueryBuilderImpl.DUMMY } );
params.add(new Object[] {"two spaces (parsing)", "a b",
QueryBuilderImpl.BASE + " AND "
- + "(LOWER(Body) LIKE '%a%' "
- + "OR LOWER(Body) LIKE '%b%' "
+ + "(LOWER(From) LIKE '%a%' "
+ + "OR LOWER(From) LIKE '%b%' "
+ "OR LOWER(Subject) LIKE '%a%' "
+ "OR LOWER(Subject) LIKE '%b%' "
+ "OR LOWER('List-Id') LIKE '%a%' "
+ "OR LOWER('List-Id') LIKE '%b%' "
- + "OR LOWER(From) LIKE '%a%' "
- + "OR LOWER(From) LIKE '%b%')"
+ + "OR LOWER(Body) LIKE '%a%' "
+ + "OR LOWER(Body) LIKE '%b%')"
} );
params.add(new Object[] {"quoted text", "\"hel wrd\"",
QueryBuilderImpl.BASE + " AND "
- + "(LOWER(Body) LIKE '%hel wrd%' "
+ + "(LOWER(From) LIKE '%hel wrd%' "
+ "OR LOWER(Subject) LIKE '%hel wrd%' "
+ "OR LOWER('List-Id') LIKE '%hel wrd%' "
- + "OR LOWER(From) LIKE '%hel wrd%')"
+ + "OR LOWER(Body) LIKE '%hel wrd%')"
} );
params.add(new Object[] {"quoted field", "from:\"w r d\" hello
", QueryBuilderImpl.BASE + " AND "
+ "(LOWER(From) LIKE '%w r d%') "
- + "AND (LOWER(Body) LIKE '%hello%' "
+ + "AND (LOWER(From) LIKE '%hello%' "
+ "OR LOWER(Subject) LIKE '%hello%' "
+ "OR LOWER('List-Id') LIKE '%hello%' "
- + "OR LOWER(From) LIKE '%hello%')"
+ + "OR LOWER(Body) LIKE '%hello%')"
} );
- // params.add(new Object[] {"name", "",
QueryBuilderImpl.BASE} );
return params;
}