/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.metadata; import org.junit.Before; import org.junit.Test; import org.hibernate.annotations.common.reflection.java.JavaReflectionManager; import org.hibernate.search.cfg.spi.SearchConfiguration; import org.hibernate.search.engine.impl.ConfigContext; import org.hibernate.search.engine.metadata.impl.AnnotationMetadataProvider; import org.hibernate.search.exception.SearchException; import org.hibernate.search.indexes.spi.LuceneEmbeddedIndexManagerType; import org.hibernate.search.metadata.IndexedTypeDescriptor; import org.hibernate.search.metadata.PropertyDescriptor; import org.hibernate.search.testsupport.TestForIssue; import org.hibernate.search.testsupport.setup.BuildContextForTest; import org.hibernate.search.testsupport.setup.SearchConfigurationForTest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** * @author Hardy Ferentschik */ @TestForIssue(jiraKey = "HSEARCH-1759") public class FieldConfigurationTest { private AnnotationMetadataProvider metadataProvider; @Before public void setUp() { SearchConfiguration searchConfiguration = new SearchConfigurationForTest(); ConfigContext configContext = new ConfigContext( searchConfiguration, new BuildContextForTest( searchConfiguration ) ); metadataProvider = new AnnotationMetadataProvider( new JavaReflectionManager(), configContext ); } @Test public void testFieldAnnotationTargetingSameFieldAsDocumentIdIsNotAllowed() { try { metadataProvider.getTypeMetadataFor( Qux.class, LuceneEmbeddedIndexManagerType.INSTANCE ); fail( "Invalid configuration should have failed" ); } catch (SearchException e) { assertTrue( "Unexpected error message: " + e.getMessage(), e.getMessage().startsWith( "HSEARCH000247" ) ); } } @Test public void testFieldAnnotationAddsAdditionalFieldForIdProperty() { IndexedTypeDescriptor typeDescriptor = DescriptorTestHelper.getTypeDescriptor( metadataProvider, Quux.class ); PropertyDescriptor propertyDescriptor = typeDescriptor.getProperty( "id" ); assertEquals( "Unexpected number of fields", 2, propertyDescriptor.getIndexedFields().size() ); } }