package com.constellio.model.entities.search.logical.criterion; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.services.search.query.logical.criteria.IsEndingWithTextCriterion; import com.constellio.sdk.tests.ConstellioTest; public class IsEndingWithTexCriterionTest extends ConstellioTest { @Mock Metadata textMetadata; @Mock Metadata booleanMetadata; String value = "value"; @Before public void setUp() throws Exception { when(textMetadata.getDataStoreCode()).thenReturn("textMetadata"); when(textMetadata.getType()).thenReturn(MetadataValueType.STRING); when(booleanMetadata.getDataStoreCode()).thenReturn("booleanMetadata"); when(booleanMetadata.getType()).thenReturn(MetadataValueType.BOOLEAN); } @Test public void whenGettingSolrQueryThenQueryIsCorrect() { IsEndingWithTextCriterion criterion = new IsEndingWithTextCriterion(value); assertThat(criterion.getSolrQuery(textMetadata)).isEqualTo("textMetadata:*value"); } @Test public void givenValueContainsSpacesWhenGettingSolrQueryThenSpacesEscaped() { value = "value with spaces"; IsEndingWithTextCriterion criterion = new IsEndingWithTextCriterion(value); assertThat(criterion.getSolrQuery(textMetadata)).isEqualTo("textMetadata:*value\\ with\\ spaces"); } @Test public void givenValueContainsAsterisksWhenGettingSolrQueryThenAsterisksEscaped() { value = "value*with*asterisks"; IsEndingWithTextCriterion criterion = new IsEndingWithTextCriterion(value); assertThat(criterion.getSolrQuery(textMetadata)).isEqualTo("textMetadata:*value\\*with\\*asterisks"); } @Test public void givenValueContainsWildCardsWhenGettingSolrQueryThenWildCardsEscaped() { value = "value?with?wildcards"; IsEndingWithTextCriterion criterion = new IsEndingWithTextCriterion(value); assertThat(criterion.getSolrQuery(textMetadata)).isEqualTo("textMetadata:*value\\?with\\?wildcards"); } @Test public void givenTextMetadataWhenCheckingIsValidForThenReturnTrue() { IsEndingWithTextCriterion criterion = new IsEndingWithTextCriterion(value); assertThat(criterion.isValidFor(textMetadata)).isTrue(); } @Test public void givenWrongTypeMetadataWhenCheckingIsValidForThenReturnFalse() { IsEndingWithTextCriterion criterion = new IsEndingWithTextCriterion(value); assertThat(criterion.isValidFor(booleanMetadata)).isFalse(); } }