/** * 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); } } }