/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * 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.ogm.datastore.mongodb.test.options.associationstorage; import static org.fest.assertions.Assertions.assertThat; import org.hibernate.ogm.datastore.document.options.AssociationStorage; import org.hibernate.ogm.datastore.document.options.AssociationStorageType; import org.hibernate.ogm.datastore.document.options.spi.AssociationStorageOption; import org.hibernate.ogm.options.container.impl.OptionsContainer; import org.hibernate.ogm.options.navigation.source.impl.AnnotationOptionValueSource; import org.junit.Before; import org.junit.Test; /** * Test the {@link AssociationStorage} annotation used to set the {@link AssociationStorageType} in MongoDB. * * @author Davide D'Alto <davide@hibernate.org> */ public class AssociationStorageAnnotationTest { private AnnotationOptionValueSource source; @Before public void setupContexts() { source = new AnnotationOptionValueSource(); } @Test public void testAssociationStorageMappingOptionOnField() throws Exception { OptionsContainer fieldOptions = source.getPropertyOptions( EntityAnnotatedOnField.class, "field" ); assertThat( fieldOptions.getUnique( AssociationStorageOption.class ) ).isEqualTo( AssociationStorageType.IN_ENTITY ); } @Test public void testAssociationStorageMappingOptionOnMethod() throws Exception { OptionsContainer methodOptions = source.getPropertyOptions( EntityAnnotatedOnMethod.class, "method" ); assertThat( methodOptions.getUnique( AssociationStorageOption.class ) ).isEqualTo( AssociationStorageType.ASSOCIATION_DOCUMENT ); } private static final class EntityAnnotatedOnField { @AssociationStorage(AssociationStorageType.IN_ENTITY) public String field; } private static final class EntityAnnotatedOnMethod { public String method; @AssociationStorage(AssociationStorageType.ASSOCIATION_DOCUMENT) public String getMethod() { return method; } } }