/*
* 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.test.inheritance;
import org.hibernate.mapping.JoinedSubclass;
import org.hibernate.mapping.RootClass;
import org.hibernate.mapping.SingleTableSubclass;
import org.hibernate.mapping.Subclass;
import org.hibernate.mapping.UnionSubclass;
import org.hibernate.ogm.jpa.impl.OgmPersisterClassResolver;
import org.hibernate.ogm.persister.impl.SingleTableOgmEntityPersister;
import org.hibernate.ogm.persister.impl.UnionSubclassOgmEntityPersister;
import org.junit.Test;
import static org.fest.assertions.Assertions.assertThat;
public class OgmPersisterClassResolverTest {
final OgmPersisterClassResolver resolver = new OgmPersisterClassResolver();
@Test
public void testPersistentRootSingleTableStrategy() throws Exception {
RootClass rootClass = new RootClass( null );
assertThat( resolver.getEntityPersisterClass( rootClass ) ).isEqualTo( SingleTableOgmEntityPersister.class );
}
@Test
public void testSinglePersistentClassTableStrategy() throws Exception {
Subclass subclass = new SingleTableSubclass( new RootClass( null ), null );
assertThat( resolver.getEntityPersisterClass( subclass ) ).isEqualTo( SingleTableOgmEntityPersister.class );
}
@Test
public void testTablePerClassPersistentSubclassStrategy() throws Exception {
Subclass subclass = new UnionSubclass( new RootClass( null ), null );
assertThat( resolver.getEntityPersisterClass( subclass ) ).isEqualTo( UnionSubclassOgmEntityPersister.class );
}
@Test(expected = UnsupportedOperationException.class)
public void testPersistenceClassSubclassJoinedStrategy() throws Exception {
Subclass subclass = new JoinedSubclass( new RootClass( null ), null );
resolver.getEntityPersisterClass( subclass );
}
}