package pl.edu.icm.saos.search.search.service;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.arrayContaining;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.common.params.FacetParams;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import pl.edu.icm.saos.search.util.FieldValuePrefixAdder;
/**
* @author madryk
*/
public class FieldFacetToQueryApplierTest {
@InjectMocks
private FieldFacetToQueryApplier fieldFacetToQueryApplier = new FieldFacetToQueryApplier();
@Mock
private FieldValuePrefixAdder fieldValuePrefixAdder;
@Before
public void before() {
initMocks(this);
}
//------------------------ TESTS --------------------------
@Test
public void applyFieldFacet_FieldPrefixNotEmpty() {
// given
SolrQuery query = new SolrQuery();
when(fieldValuePrefixAdder.prefixWithSeparator("fieldPrefix")).thenReturn("fieldPrefix#");
// execute
fieldFacetToQueryApplier.applyFieldFacet(query, "fieldName", "fieldPrefix");
// assert
assertThat(query.getParams("facet"), arrayContaining("true"));
assertThat(query.getParams("facet.field"), arrayContaining("fieldName"));
assertThat(query.getParams("f.fieldName.facet.prefix"), arrayContaining("fieldPrefix#"));
assertThat(query.getParams("f.fieldName.facet.sort"), arrayContaining(FacetParams.FACET_SORT_INDEX));
}
@Test
public void applyFieldFacet_FieldPrefixBlank() {
// given
SolrQuery query = new SolrQuery();
// execute
fieldFacetToQueryApplier.applyFieldFacet(query, "fieldName", " ");
// assert
assertThat(query.getParams("facet"), arrayContaining("true"));
assertThat(query.getParams("facet.field"), arrayContaining("fieldName"));
assertThat(query.getParams("f.fieldName.facet.sort"), arrayContaining(FacetParams.FACET_SORT_INDEX));
assertNull(query.getParams("f.fieldName.facet.prefix"));
}
}