/* * Copyright 2010 Peter Karich jetwick_@_pannous_._info * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.jetwick.es; import de.jetwick.util.Helper; import java.util.Date; import org.junit.Test; import static org.junit.Assert.*; /** * * @author Peter Karich, jetwick_@_pannous_._info */ public class SavedSearchTest { public SavedSearchTest() { } @Test public void testQuery() { assertEquals("java, user:\"peter\"", new SavedSearch(1, new TweetQuery("java").addFilterQuery("user", "\"peter\"")).getName()); assertEquals("user:\"peter\"", new SavedSearch(1, new TweetQuery().addFilterQuery("user", "\"peter\"")).getName()); assertEquals("java, user:\"peter rich\"", new SavedSearch(1, new TweetQuery("java").addFilterQuery("user", "\"peter rich\"")).getName()); assertEquals("java termin, user:\"peter test\"", new SavedSearch(1, new TweetQuery("java termin").addFilterQuery("user", "\"peter test\"")).getName()); assertEquals("java, -user:peter", new SavedSearch(1, new TweetQuery("java").addFilterQuery("-user", "peter")).getName()); } @Test public void testSave() { TweetQuery q1 = new TweetQuery("java"); q1.addFilterQuery("user", "peter"); assertTrue(new SavedSearch(1, q1).toString().contains("q=java")); assertTrue(new SavedSearch(1, q1).toString().contains("fq=user%3Apeter")); assertEquals(q1.getFilterQueries(), JetwickQuery.parseQuery("fq=user%3Apeter").getFilterQueries()); q1 = new TweetQuery("java"); q1.addFilterQuery("-user", "peter"); assertTrue(new SavedSearch(1, q1).toString().contains("q=java")); assertTrue(new SavedSearch(1, q1).toString().contains("fq=-user%3Apeter")); assertEquals(q1.getFilterQueries(), JetwickQuery.parseQuery("fq=-user%3Apeter").getFilterQueries()); } @Test public void testGetQueryWithoutDateFilter() { assertEquals(0, new SavedSearch(1, new TweetQuery().addFilterQuery("dt", "[1 TO 2]")).getCleanQuery().getFilterQueries().size()); assertEquals(1, new SavedSearch(1, new TweetQuery().addFilterQuery("dt", "[1 TO 2]"). addFilterQuery("xy", "ab")).getCleanQuery().getFilterQueries().size()); } @Test public void testAddFacet() { assertEndsWith("*:*", new SavedSearch(1, new TweetQuery()).calcFacetQuery()); assertEndsWith("*:*", new SavedSearch(1, new TweetQuery("")).calcFacetQuery()); assertEndsWith("peter", new SavedSearch(1, new TweetQuery("peter ")).calcFacetQuery()); assertEndsWith("peter pan", new SavedSearch(1, new TweetQuery("peter pan")).calcFacetQuery()); assertEndsWith("(peter pan) AND test:x", new SavedSearch(1, new TweetQuery("peter pan").addFilterQuery("test", "x")).calcFacetQuery()); assertEndsWith("(peter pan) AND test:x AND test2:y", new SavedSearch(1, new TweetQuery("peter pan").addFilterQuery("test", "x"). addFilterQuery("test2", "y")).calcFacetQuery()); assertEquals("solr lucene", new SavedSearch(1, new TweetQuery("solr lucene")).calcFacetQuery()); assertEquals("solr OR lucene", new SavedSearch(1, new TweetQuery("solr OR lucene")).calcFacetQuery()); } @Test public void testLastQueryDate() { TweetQuery q = new TweetQuery("wicket"); SavedSearch ss = new SavedSearch(1, q); assertEndsWith("wicket", ss.calcFacetQuery()); Date date = ss.getLastQueryDate(); assertNull(date); ss.getQuery(); date = ss.getLastQueryDate(); assertNotNull(date); assertEndsWith("wicket AND dt:[" + Helper.toLocalDateTime(date) + " TO *]", ss.calcFacetQuery()); } public void assertEndsWith(String start, String str2) { assertTrue("expected end:" + start + " but was:" + str2, str2.endsWith(start)); } }