com.plugtree.solrmeter.QueryServiceSolrJImplTestCase.java Source code

Java tutorial

Introduction

Here is the source code for com.plugtree.solrmeter.QueryServiceSolrJImplTestCase.java

Source

/**
 * Copyright Plugtree LLC
 *
 * 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 com.plugtree.solrmeter;

import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;

import com.plugtree.solrmeter.model.exception.QueryException;
import com.plugtree.solrmeter.model.service.impl.QueryServiceSolrJImpl;

public class QueryServiceSolrJImplTestCase extends BaseTestCase {

    public void testGetFacets() throws QueryException {
        QueryServiceSolrJSpy service = new QueryServiceSolrJSpy();
        assertEquals(0, service.getFacets("").size());
        assertEquals(1, service.getFacets("name").size());
        assertEquals(1, service.getFacets(" name ").size());
        assertEquals(1, service.getFacets("name,").size());
        assertEquals(2, service.getFacets("name, category").size());
        assertEquals(3, service.getFacets("name, category, type").size());
        try {
            service.getFacets("name category type");
            fail("Exception expected");
        } catch (QueryException e) {
            //expected
        }
    }

    public void testGetFilterQueries() throws QueryException {
        QueryServiceSolrJSpy service = new QueryServiceSolrJSpy();
        assertEquals(0, service.getFilterQueries("").size());
        assertEquals(1, service.getFilterQueries("name:tomas").size());
        assertEquals(2, service.getFilterQueries("name:tomas, surname:\"Fernandez Lobbe\"").size());
        assertEquals(2, service.getFilterQueries("name:tomas, surname:(Fernandez Lobbe)").size());
        assertEquals(2, service.getFilterQueries("name:tomas, surname:Fernandez Lobbe").size());
        try {
            service.getFilterQueries("name=tomas");
            fail("Expected Exception");
        } catch (QueryException e) {
            //expected
        }

        try {
            service.getFilterQueries("name tomas");
            fail("Expected Exception");
        } catch (QueryException e) {
            //expected
        }
        try {
            service.getFilterQueries(":tomas");
            fail("Expected Exception");
        } catch (QueryException e) {
            //expected
        }
        try {
            service.getFilterQueries("name:");
            fail("Expected Exception");
        } catch (QueryException e) {
            //expected
        }

    }

    public void testGetOtherParams() throws QueryException {
        QueryServiceSolrJSpy service = new QueryServiceSolrJSpy();
        assertEquals(0, service.getOtherParams("").size());
        assertEquals(1, service.getOtherParams("indent=on").size());
        assertEquals(2, service.getOtherParams("indent=on, debugQuery=true").size());
        try {
            service.getOtherParams("=true");
            fail("Expected Exception");
        } catch (QueryException e) {
            //expected
        }
    }

    public void testGetParamNameAndValue() {
        QueryServiceSolrJSpy service = new QueryServiceSolrJSpy();
        assertEquals("indent", service.getParamName("indent=on"));
        assertEquals("on", service.getParamValue("indent=on"));
    }

    public void testCreateQuery() throws QueryException {
        QueryServiceSolrJSpy service = new QueryServiceSolrJSpy();
        SolrQuery query = service.createQuery("some query", "name:tomas", "/dismax", false, "name, surname", null,
                null, 10, 0, "");
        assertEquals("some query", query.get("q"));
        assertEquals(new String[] { "name:tomas" }, query.getFilterQueries());
        assertEquals("/dismax", query.getQueryType());
        assertEquals(new String[] { "name", "surname" }, query.getFacetFields());

        service.createQuery(null, "name:tomas", "/dismax", false, "name, surname", null, null, 10, 0, "");
        service.createQuery("", null, "/dismax", false, "name, surname", null, null, 10, 0, "");
        service.createQuery("", "name:tomas", null, false, "name, surname", null, null, 10, 0, "");
        service.createQuery("", "name:tomas", "/dismax", false, null, null, null, 10, 0, "");
        service.createQuery("", "name:tomas", "/dismax", false, "name, surname", "name", "desc", 10, 0, "");
        service.createQuery("", "name:tomas", "/dismax", false, "name, surname", "name", "asc", 10, 0, "");
        service.createQuery("", "name:tomas", "/dismax", false, "name, surname", "name", "asc", 10, 0, null);
        service.createQuery("", "name:tomas", "/dismax", false, "name, surname", "name", "asc", null, 0, "");
        service.createQuery("", "name:tomas", "/dismax", false, "name, surname", "name", "asc", 10, null, "");
    }

    private class QueryServiceSolrJSpy extends QueryServiceSolrJImpl {

        public List<String> getFacets(String facetFields) throws QueryException {
            return super.getFacets(facetFields);
        }

        @Override
        public List<String> getFilterQueries(String fq) throws QueryException {
            return super.getFilterQueries(fq);
        }

        @Override
        protected List<String> getOtherParams(String otherParams) throws QueryException {
            return super.getOtherParams(otherParams);
        }

        @Override
        protected String getParamName(String param) {
            return super.getParamName(param);
        }

        @Override
        protected String getParamValue(String param) {
            return super.getParamValue(param);
        }

        @Override
        protected SolrQuery createQuery(String q, String fq, String qt, boolean highlight, String facetFields,
                String sort, String sortOrder, Integer rows, Integer start, String otherParams)
                throws QueryException {
            return super.createQuery(q, fq, qt, highlight, facetFields, sort, sortOrder, rows, start, otherParams);
        }
    }
}