Package de.jetwick.es

Source Code of de.jetwick.es.JetwickQueryTest

/*
*  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 org.elasticsearch.index.query.FilterBuilder;
import org.elasticsearch.index.query.ExistsFilterBuilder;
import org.elasticsearch.index.query.RangeFilterBuilder;
import org.elasticsearch.index.query.TermFilterBuilder;
import org.elasticsearch.index.query.TermsFilterBuilder;
import de.jetwick.data.JTweet;
import de.jetwick.data.JUser;
import java.io.IOException;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.junit.Test;
import static org.junit.Assert.*;

import static org.elasticsearch.common.xcontent.XContentFactory.*;

/**
*
* @author Peter Karich, jetwick_@_pannous_._info
*/
public class JetwickQueryTest {

    public JetwickQueryTest() {
    }

    @Test
    public void testForbiddenChars() {
        assertFalse(JetwickQuery.containsForbiddenChars("test schnest"));
        assertTrue(JetwickQuery.containsForbiddenChars("test:xy"));
        assertTrue(JetwickQuery.containsForbiddenChars("test:xy*"));
    }

    @Test
    public void testParseDate() {
        TweetQuery newQ = TweetQuery.parseQuery("q=test&fq=dt:[2011-03-21T09:00:00.0Z TO *]&fq=x:y");
        assertEquals("dt", newQ.getFilterQueries().get(0).getKey());
        assertEquals("[2011-03-21T09:00:00.0Z TO *]", newQ.getFilterQueries().get(0).getValue());
        assertEquals("x", newQ.getFilterQueries().get(1).getKey());
        assertEquals("y", newQ.getFilterQueries().get(1).getValue());
    }

    @Test
    public void testRemoveFilters() {
        JetwickQuery q = new TweetQuery().addFilterQuery("test", "pest");
        q.removeFilterQueries("test");
        assertEquals(0, q.getFilterQueries().size());
        q.addFilterQuery("test", "pest").addFilterQuery("-test", "pesting").addFilterQuery("anotherfield", "value");
        q.removeFilterQueries("test");
        assertEquals(1, q.getFilterQueries().size());
        assertEquals("anotherfield", q.getFilterQueries().get(0).getKey());
    }

    @Test
    public void testSimilarQuery() {
        SimilarTweetQuery q = new SimilarTweetQuery(
                new JTweet(1L, "Test test jAva http://blabli", new JUser("tmp")), false);

        assertTrue(q.calcTerms().contains("test"));
        assertTrue(q.calcTerms().contains("java"));
        assertFalse("query mustn't contain links or parts of links", q.calcTerms().contains("http"));
        q = new SimilarTweetQuery(new JTweet(1L, "RT @user: test", new JUser("tmp")), false);
        assertFalse("query mustn't contain user", q.calcTerms().contains("user"));
    }

    @Test
    public void testParse() {
        JetwickQuery q = new TweetQuery("test").addFilterQuery("test", "xy").
                setSort("blie", "desc").addFacetField("coolField").addFacetField("test", 20);
        TweetQuery newQ = TweetQuery.parseQuery(q.toString());
        assertEquals(q.toString(), newQ.toString());
        assertEquals(q, newQ);
    }

    @Test
    public void testFilterQuery2Builder() throws IOException {
        // how to test???

        FilterBuilder builder = new TweetQuery().filterQuery2Builder("field", "[1 TO 2]");
        assertEquals(1, 1);
        builder = new TweetQuery().filterQuery2Builder("field", "[1 TO Infinity]");
        assertTrue(builder instanceof RangeFilterBuilder);
        assertEquals(c("{'range':{'field':{'from':1,'to':null,'include_lower':true,'include_upper':true}}}"), toString(builder));

        builder = new TweetQuery().filterQuery2Builder("field", "[-Infinity TO Infinity]");
        assertTrue(builder instanceof ExistsFilterBuilder);

        builder = new TweetQuery().filterQuery2Builder("field", "[-Infinity TO 2]");
        assertTrue(builder instanceof RangeFilterBuilder);
        assertEquals(c("{'range':{'field':{'from':null,'to':2,'include_lower':true,'include_upper':true}}}"), toString(builder));

        builder = new TweetQuery().filterQuery2Builder("field", "test");
        assertTrue(builder instanceof TermFilterBuilder);
        assertEquals(c("{'term':{'field':'test'}}"), toString(builder));

        builder = new TweetQuery().filterQuery2Builder("field", "\"test\"");
        assertTrue(builder instanceof TermFilterBuilder);
        assertEquals(c("{'term':{'field':'test'}}"), toString(builder));

        builder = new TweetQuery().filterQuery2Builder("field", "1 OR 2");
        assertTrue(builder instanceof TermsFilterBuilder);
        assertEquals(c("{'terms':{'field':[1,2]}}"), toString(builder));
    }

    public static String c(String str) {
        return str.replaceAll("'", "\"");
    }

    public static String toString(ToXContent content) throws IOException {
        XContentBuilder json = jsonBuilder();
        content.toXContent(json, null); //ToXContent.EMPTY_PARAMS       
        return json.string();
    }
}
TOP

Related Classes of de.jetwick.es.JetwickQueryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.