package io.robe.hibernate;
import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module;
import com.google.common.collect.ImmutableList;
import io.dropwizard.Configuration;
import io.dropwizard.db.PooledDataSourceFactory;
import io.robe.test.Order;
import io.robe.test.Roadrunner;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Created by adem on 19/10/2016.
*/
@RunWith(Roadrunner.class)
public class RobeHibernateBundleTest {
class TestConfig extends Configuration implements HasHibernateConfiguration {
@Override
public HibernateConfiguration getHibernate() {
return new HibernateConfiguration();
}
}
private final String[] packagesToScan = new String[]{"io.robe.hibernate.entity"};
private final String[] entities = new String[]{"io.robe.hibernate.AnotherTestEntity", "io.robe.hibernate.entity.NotAnnotatedEntity"};
@Test(expected = RuntimeException.class)
@Order
public void getInstanceThrowsRuntimeException() {
RobeHibernateBundle.getInstance();
}
@Test
@Order(order = 2)
public void createInstance() {
RobeHibernateBundle.createInstance(packagesToScan, entities);
}
@Test
@Order(order = 3)
public void getInstance() {
RobeHibernateBundle bundle = RobeHibernateBundle.getInstance();
Assert.assertNotNull(bundle);
}
@Test(expected = RuntimeException.class)
@Order(order = 4)
public void createInstanceThrowsException() {
RobeHibernateBundle.createInstance(packagesToScan, entities);
}
@Test
@Order(order = 5)
public void loadEntities() {
ImmutableList<Class<?>> loadedEntities = RobeHibernateBundle.loadEntities(packagesToScan, entities);
Assert.assertEquals(4, loadedEntities.size());
}
@Test
@Order(order = 6)
public void getHibernate5Module() {
Hibernate5Module hibernate5Module = RobeHibernateBundle.getInstance().createHibernate5Module();
Assert.assertNotNull(hibernate5Module);
Assert.assertFalse(hibernate5Module.isEnabled(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION));
}
@Test
@Order(order = 7)
public void getDatabaseConfiguration() {
HibernateConfiguration databaseConfiguration = RobeHibernateBundle.getInstance().getDatabaseConfiguration(new TestConfig());
Assert.assertNotNull(databaseConfiguration);
}
@Test
@Order(order = 8)
public void getDatasourceFactory() {
PooledDataSourceFactory dataSourceFactory = RobeHibernateBundle.getInstance().getDataSourceFactory(new TestConfig());
Assert.assertNotNull(dataSourceFactory);
}
@Test
@Order(order = 9)
public void configure() {
org.hibernate.cfg.Configuration configuration = new org.hibernate.cfg.Configuration();
RobeHibernateBundle.getInstance().configure(configuration);
Assert.assertEquals(configuration, RobeHibernateBundle.getInstance().getConfiguration());
}
}