/* * Copyright 2012 - 2013 the original author or authors. * * 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 org.springframework.data.solr.core; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.springframework.data.solr.core.query.SimpleTermsQuery; import org.springframework.data.solr.core.query.TermsOptions; import org.springframework.data.solr.core.query.TermsOptions.RegexFlag; import org.springframework.data.solr.core.query.TermsQuery; /** * @author Christoph Strobl */ public class TermsQueryParserTests { private TermsQueryParser parser; @Before public void setUp() { this.parser = new TermsQueryParser(); } @Test public void testConstructSolrQueryProcessesTermsLimitCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().limit(100).build(); Assert.assertEquals(100, parser.constructSolrQuery(q).getTermsLimit()); } @Test public void testConstructSolrQueryIgnoresTermsLimitLessThanZero() { TermsQuery q = SimpleTermsQuery.queryBuilder().limit(-1).build(); Assert.assertEquals("Expected SolrQuery default value: 10", 10, parser.constructSolrQuery(q).getTermsLimit()); } @Test public void testConstructSolrQueryProcessesTermsMaxCountCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().maxCount(100).build(); Assert.assertEquals(100, parser.constructSolrQuery(q).getTermsMaxCount()); } @Test public void testConstructSolrQueryIgnoresTermsMaxCountLessThanMinusOne() { TermsQuery q = SimpleTermsQuery.queryBuilder().maxCount(-2).build(); Assert.assertEquals("Expected SolrQuery default value: -1", -1, parser.constructSolrQuery(q).getTermsMaxCount()); } @Test public void testConstructSolrQueryProcessesTermsMinCountCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().minCount(100).build(); Assert.assertEquals(100, parser.constructSolrQuery(q).getTermsMinCount()); } @Test public void testConstructSolrQueryIgnoresTermsMinCountLessThanZero() { TermsQuery q = SimpleTermsQuery.queryBuilder().minCount(-1).build(); Assert.assertEquals("Expected SolrQuery default value: 1", 1, parser.constructSolrQuery(q).getTermsMinCount()); } @Test public void testConstructSolrQueryProcessesTermsPrefixCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().prefix("springdata").build(); Assert.assertEquals("springdata", parser.constructSolrQuery(q).getTermsPrefix()); } @Test public void testConstructSolrQueryIgnoresTermsPrefixWhenNull() { TermsQuery q = SimpleTermsQuery.queryBuilder().prefix(null).build(); Assert.assertEquals("Expected SolrQuery default value: <empty string>", "", parser.constructSolrQuery(q) .getTermsPrefix()); } @Test public void testConstructSolrQueryIgnoresTermsPrefixWhenBlank() { TermsQuery q = SimpleTermsQuery.queryBuilder().prefix(" ").build(); Assert.assertEquals("Expected SolrQuery default value: <empty string>", "", parser.constructSolrQuery(q) .getTermsPrefix()); } @Test public void testConstructSolrQueryProcessesTermsRegexCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().regex("solr").build(); Assert.assertEquals("solr", parser.constructSolrQuery(q).getTermsRegex()); } @Test public void testConstructSolrQueryIgnoresTermsRegexWhenNull() { TermsQuery q = SimpleTermsQuery.queryBuilder().regex(null).build(); Assert.assertNull(parser.constructSolrQuery(q).getTermsRegex()); } @Test public void testConstructSolrQueryIgnoresTermsRegexWhenBlank() { TermsQuery q = SimpleTermsQuery.queryBuilder().regex(" ").build(); Assert.assertNull(parser.constructSolrQuery(q).getTermsRegex()); } @Test public void testConstructSolrQueryProcessesTermsRegexFlagCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().regexFlag(RegexFlag.CASE_INSENSITIVE).build(); Assert.assertArrayEquals(new String[] { "case_insensitive" }, parser.constructSolrQuery(q).getTermsRegexFlags()); } @Test public void testConstructSolrQueryIgnoresTermsRegexFlagWhenNull() { TermsQuery q = SimpleTermsQuery.queryBuilder().regexFlag(null).build(); Assert.assertNull(parser.constructSolrQuery(q).getTermsRegexFlags()); } @Test public void testConstructSolrQueryProcessesTermsSortCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().sort(TermsOptions.Sort.INDEX).build(); Assert.assertEquals("index", parser.constructSolrQuery(q).getTermsSortString()); } @Test public void testConstructSolrQueryIgnoresTermsSortWhenNull() { TermsQuery q = SimpleTermsQuery.queryBuilder().sort(null).build(); Assert.assertEquals("Expected SolrQuery default value: count", "count", parser.constructSolrQuery(q) .getTermsSortString()); } @Test public void testConstructSolrQueryProcessesSingleFieldCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().fields("field_1").build(); Assert.assertArrayEquals(new String[] { "field_1" }, parser.constructSolrQuery(q).getTermsFields()); } @Test public void testConstructSolrQueryProcessesMultipleFieldsCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder("field_1", "field_2", "field_3").build(); Assert.assertArrayEquals(new String[] { "field_1", "field_2", "field_3" }, parser.constructSolrQuery(q) .getTermsFields()); } @Test public void testConstructSolrQueryProcessesRequestHandlerCorrectly() { TermsQuery q = SimpleTermsQuery.queryBuilder().handledBy("/termsRequestHandler").build(); Assert.assertEquals("/termsRequestHandler", parser.constructSolrQuery(q).getRequestHandler()); } @Test public void testConstructSolrQuerySetRequestHandlerToDefaultWhenNull() { TermsQuery q = SimpleTermsQuery.queryBuilder().handledBy(null).build(); Assert.assertEquals("/terms", parser.constructSolrQuery(q).getRequestHandler()); } @Test public void testConstructSolrQuerySetRequestHandlerToDefaultWhenBlank() { TermsQuery q = SimpleTermsQuery.queryBuilder().handledBy(" ").build(); Assert.assertEquals("/terms", parser.constructSolrQuery(q).getRequestHandler()); } }