package org.infinispan.query.dsl.embedded.impl; import static org.assertj.core.api.Assertions.assertThat; import org.hibernate.search.annotations.Analyze; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.NumericField; import org.hibernate.search.testsupport.junit.SearchFactoryHolder; import org.infinispan.objectfilter.impl.syntax.parser.ReflectionEntityNamesResolver; import org.junit.Before; import org.junit.Rule; import org.junit.Test; /** * @author anistor@redhat.com * @since 9.0 */ public class HibernateSearchPropertyHelperTest { @Rule public SearchFactoryHolder factoryHolder = new SearchFactoryHolder(TestEntity.class); private HibernateSearchPropertyHelper propertyHelper; @Before public void setup() { propertyHelper = new HibernateSearchPropertyHelper(factoryHolder.getSearchFactory(), new ReflectionEntityNamesResolver(null)); } private Object convertToPropertyType(Class<?> type, String propertyName, String value) { return propertyHelper.convertToPropertyType(type, new String[]{propertyName}, value); } @Test public void testConvertIdProperty() { assertThat(convertToPropertyType(TestEntity.class, "id", "42")).isEqualTo("42"); } @Test public void testConvertStringProperty() { assertThat(convertToPropertyType(TestEntity.class, "name", "42")).isEqualTo("42"); } @Test public void testConvertIntProperty() { assertThat(convertToPropertyType(TestEntity.class, "i", "42")).isEqualTo(42); } @Test public void testConvertLongProperty() { assertThat(convertToPropertyType(TestEntity.class, "l", "42")).isEqualTo(42L); } @Test public void testConvertFloatProperty() { assertThat(convertToPropertyType(TestEntity.class, "f", "42.0")).isEqualTo(42.0F); } @Test public void testConvertDoubleProperty() { assertThat(convertToPropertyType(TestEntity.class, "d", "42.0")).isEqualTo(42.0D); } @Test public void testRecognizeAnalyzedField() { assertThat(propertyHelper.getIndexedFieldProvider().get(TestEntity.class).isAnalyzed(new String[]{"description"})).isTrue(); } @Test public void testRecognizeUnanalyzedField() { assertThat(propertyHelper.getIndexedFieldProvider().get(TestEntity.class).isAnalyzed(new String[]{"i"})).isFalse(); } @Indexed static class TestEntity { @DocumentId public String id; @Field(analyze = Analyze.NO) public String name; @Field(analyze = Analyze.YES) public String description; @Field(analyze = Analyze.NO) @NumericField public int i; @Field(analyze = Analyze.NO) @NumericField public long l; @Field(analyze = Analyze.NO) @NumericField public float f; @Field(analyze = Analyze.NO) @NumericField public double d; } }