package org.unitils.dbunit;
import java.util.Properties;
import org.dbunit.database.DatabaseConfig;
import org.dbunit.database.DefaultMetadataHandler;
import org.dbunit.database.IMetadataHandler;
import org.dbunit.ext.mysql.MySqlMetadataHandler;
import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.unitils.UnitilsJUnit4TestClassRunner;
import org.unitils.core.ConfigurationLoader;
import org.unitils.dbunit.util.DbUnitDatabaseConnection;
/**
* Test if the {@link DbUnitModule} picks the correct {@link IMetadataHandler}.
*
* @author Willemijn Wouters
*
* @since 3.4.1
*
*/
@RunWith(UnitilsJUnit4TestClassRunner.class)
public class DbUnitModuleTestDefaultDatabaseMetaHandler {
private DbUnitModule sut;
private String schema;
private Properties configuration;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
sut = new DbUnitModule();
configuration = new ConfigurationLoader().loadConfiguration();
sut.init(configuration);
schema = "public";
}
/**
* Test method for {@link org.unitils.dbunit.DbUnitModule#createDbUnitConnection(java.lang.String)}.
*/
@Test
public void testCreateDefaultDbUnitConnection() {
DbUnitDatabaseConnection connection = sut.createDbUnitConnection(schema);
DatabaseConfig databaseConfig = connection.getConfig();
Object metaHandler = databaseConfig.getProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER);
Assert.assertNotNull(metaHandler);
Assert.assertThat(metaHandler, CoreMatchers.instanceOf(DefaultMetadataHandler.class));
}
/**
* Test method for {@link org.unitils.dbunit.DbUnitModule#createDbUnitConnection(java.lang.String)}.
*/
@Test
public void testCreateDbUnitConnection() {
Properties tempConfig = (Properties) configuration.clone();
tempConfig.setProperty("org.dbunit.database.IMetadataHandler.implClassName", "org.dbunit.ext.mysql.MySqlMetadataHandler");
sut.init(tempConfig);
DbUnitDatabaseConnection connection = sut.createDbUnitConnection(schema);
DatabaseConfig databaseConfig = connection.getConfig();
Object metaHandler = databaseConfig.getProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER);
Assert.assertNotNull(metaHandler);
Assert.assertThat(metaHandler, CoreMatchers.instanceOf(MySqlMetadataHandler.class));
}
@Test
public void testGetCorrectDatabaseMetaHandler() {
Properties prop = new Properties();
prop.setProperty("org.dbunit.database.IMetadataHandler.implClassName", "org.dbunit.database.DefaultMetadataHandler");
sut.init(prop);
IMetadataHandler metaHandler1 = sut.getDefaultDatabaseMetaHandler();
Assert.assertNotNull(metaHandler1);
Assert.assertThat(metaHandler1, CoreMatchers.instanceOf(DefaultMetadataHandler.class));
prop = new Properties();
prop.setProperty("org.dbunit.database.IMetadataHandler.implClassName", "org.dbunit.ext.mysql.MySqlMetadataHandler");
sut.init(prop);
metaHandler1 = sut.getDefaultDatabaseMetaHandler();
Assert.assertNotNull(metaHandler1);
Assert.assertThat(metaHandler1, CoreMatchers.instanceOf(MySqlMetadataHandler.class));
}
}