/*
* 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 java.lang.annotation.ElementType;
import org.hibernate.ogm.datastore.document.options.AssociationStorageType;
import org.hibernate.ogm.datastore.document.options.spi.AssociationStorageOption;
import org.hibernate.ogm.datastore.mongodb.MongoDB;
import org.hibernate.ogm.options.container.impl.OptionsContainer;
import org.hibernate.ogm.options.navigation.impl.AppendableConfigurationContext;
import org.hibernate.ogm.options.navigation.impl.ConfigurationContextImpl;
import org.hibernate.ogm.options.navigation.source.impl.ProgrammaticOptionValueSource;
import org.hibernate.ogm.options.navigation.spi.ConfigurationContext;
import org.junit.Test;
/**
* Test the {@link AssociationStorageOption} used to set the {@link AssociationStorageType} in MongoDB.
*
* @author Davide D'Alto <davide@hibernate.org>
*/
public class AssociationStorageOptionTest {
@Test
public void testAssociationStorageMappingOption() throws Exception {
AppendableConfigurationContext context = new AppendableConfigurationContext();
ConfigurationContext configurationContext = new ConfigurationContextImpl( context );
new MongoDB().getConfigurationBuilder( configurationContext )
.entity( ExampleForMongoDBMapping.class )
.property( "content", ElementType.FIELD )
.associationStorage( AssociationStorageType.ASSOCIATION_DOCUMENT );
OptionsContainer options = new ProgrammaticOptionValueSource( context ).getPropertyOptions( ExampleForMongoDBMapping.class, "content" );
assertThat( options.getUnique( AssociationStorageOption.class ) ).isEqualTo( AssociationStorageType.ASSOCIATION_DOCUMENT );
}
@SuppressWarnings("unused")
private static final class ExampleForMongoDBMapping {
String content;
}
}