package org.needle4j.db;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import javax.persistence.EntityManager;
import org.junit.Test;
import org.needle4j.configuration.PropertyBasedConfigurationFactory;
import org.needle4j.db.operation.AbstractDBOperation;
import org.needle4j.db.operation.ExecuteScriptOperation;
import org.needle4j.db.operation.JdbcConfiguration;
import org.needle4j.db.operation.hsql.HSQLDeleteOperation;
import org.needle4j.reflection.ReflectionUtil;
public class DatabaseTestcaseConfigurationTest {
@Test(expected = RuntimeException.class)
public void testEntityManager_Close() throws Exception {
DatabaseTestcaseConfiguration databaseRuleConfiguration = new DatabaseTestcaseConfiguration(
PropertyBasedConfigurationFactory.get(), "TestDataModel");
EntityManager entityManager = databaseRuleConfiguration.getEntityManager();
assertNotNull(entityManager);
entityManager.close();
}
@Test
public void testGetEntityManagerFactoryProperties() throws Exception {
DatabaseTestcaseConfiguration databaseRuleConfiguration = new DatabaseTestcaseConfiguration(
PropertyBasedConfigurationFactory.get());
JdbcConfiguration jdbcConfiguration = (JdbcConfiguration) ReflectionUtil.invokeMethod(
databaseRuleConfiguration, "getEntityManagerFactoryProperties");
assertNotNull(jdbcConfiguration);
}
@Test
public void testCreateDBOperation() throws Exception {
DatabaseTestcaseConfiguration configuration = new DatabaseTestcaseConfiguration(
PropertyBasedConfigurationFactory.get());
AbstractDBOperation operation = configuration.createDBOperation(ExecuteScriptOperation.class);
assertTrue(operation instanceof ExecuteScriptOperation);
}
@Test
public void testCreateDBOperation_Null() throws Exception {
DatabaseTestcaseConfiguration configuration = new DatabaseTestcaseConfiguration(
PropertyBasedConfigurationFactory.get());
assertNull(configuration.createDBOperation(null));
}
@Test
public void testLookupDBOperationClassClass_HSQLDeleteOperation() throws Exception {
Class<? extends AbstractDBOperation> dbDialectClass = DatabaseTestcaseConfiguration
.lookupDBOperationClass(HSQLDeleteOperation.class.getName());
assertEquals(HSQLDeleteOperation.class, dbDialectClass);
}
@Test
public void testLookupDBOperationClassClass_UnknownClass() throws Exception {
Class<? extends AbstractDBOperation> dbDialectClass = DatabaseTestcaseConfiguration
.lookupDBOperationClass("unknowm");
assertNull(dbDialectClass);
}
@Test
public void testLookupDBOperationClassClass_Null() throws Exception {
Class<? extends AbstractDBOperation> dbDialectClass = DatabaseTestcaseConfiguration
.lookupDBOperationClass(null);
assertNull(dbDialectClass);
}
}