package pl.edu.icm.saos.search.search.service; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.arrayContaining; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.initMocks; import org.apache.solr.client.solrj.SolrQuery; 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 RangeFacetToQueryApplierTest { @InjectMocks private RangeFacetToQueryApplier rangeFacetToQueryApplier = new RangeFacetToQueryApplier(); @Mock private FieldValuePrefixAdder fieldValuePrefixAdder; @Before public void before() { initMocks(this); } //------------------------ TEST -------------------------- @Test public void applyRangeFacet() { // given SolrQuery query = new SolrQuery(); when(fieldValuePrefixAdder.prefixWithSeparator("valuePrefix")).thenReturn("valuePrefix#"); // execute rangeFacetToQueryApplier.applyRangeFacet(query, "fieldName", "startParam", "endParam", "gapParam"); // assert assertThat(query.getParams("facet"), arrayContaining("true")); assertThat(query.getParams("facet.range"), arrayContaining("fieldName")); assertThat(query.getParams("f.fieldName.facet.range.start"), arrayContaining("startParam")); assertThat(query.getParams("f.fieldName.facet.range.end"), arrayContaining("endParam")); assertThat(query.getParams("f.fieldName.facet.range.gap"), arrayContaining("gapParam")); assertThat(query.getParameterNames(), containsInAnyOrder("facet", "facet.range", "f.fieldName.facet.range.start", "f.fieldName.facet.range.end", "f.fieldName.facet.range.gap")); } @Test public void applyRangeFacet_fieldValuePrefixBlank() { // given SolrQuery query = new SolrQuery(); when(fieldValuePrefixAdder.prefixWithSeparator("valuePrefix")).thenReturn("valuePrefix#"); // execute rangeFacetToQueryApplier.applyRangeFacet(query, "fieldName", "startParam", "endParam", "gapParam"); // assert assertThat(query.getParameterNames(), containsInAnyOrder("facet", "facet.range", "f.fieldName.facet.range.start", "f.fieldName.facet.range.end", "f.fieldName.facet.range.gap")); } @Test(expected = NullPointerException.class) public void applyRangeFacet_NULL_QUERY() { // execute rangeFacetToQueryApplier.applyRangeFacet(null, "fieldName", "startParam", "endParam", "gapParam"); } @Test(expected = NullPointerException.class) public void applyRangeFacet_NULL_FIELD_NAME() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), null, "startParam", "endParam", "gapParam"); } @Test(expected = IllegalArgumentException.class) public void applyRangeFacet_BLANK_FIELD_NAME() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), " ", "startParam", "endParam", "gapParam"); } @Test(expected = NullPointerException.class) public void applyRangeFacet_NULL_START() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), "fieldName", null, "endParam", "gapParam"); } @Test(expected = IllegalArgumentException.class) public void applyRangeFacet_BLANK_START() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), "fieldName", " ", "endParam", "gapParam"); } @Test(expected = NullPointerException.class) public void applyRangeFacet_NULL_END() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), "fieldName", "startParam", null, "gapParam"); } @Test(expected = IllegalArgumentException.class) public void applyRangeFacet_BLANK_END() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), "fieldName", "startParam", " ", "gapParam"); } @Test(expected = NullPointerException.class) public void applyRangeFacet_NULL_GAP() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), "fieldName", "startParam", "endParam", null); } @Test(expected = IllegalArgumentException.class) public void applyRangeFacet_BLANK_GAP() { // execute rangeFacetToQueryApplier.applyRangeFacet(new SolrQuery(), "fieldName", "startParam", "endParam", " "); } }