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