/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.tools;
import java.sql.Connection;
import java.util.Properties;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
import org.hibernate.cfg.Configuration;
import static org.easymock.EasyMock.*;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import com.globant.katari.tools.database.MySqlDropAllObjects;
public class DatabaseTestSupportTest {
@Test
public void testCreate() {
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
Configuration hibernateConfig = createMock(Configuration.class);
expect(hibernateConfig.getProperties()).andReturn(properties);
replay(hibernateConfig);
/* EasyMock did not work here because getConfiguration is final. */
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
new DirectFieldAccessor(sessionFactory).setPropertyValue("configuration",
hibernateConfig);
/*
DatabaseTestSupport dbSupport = new DatabaseTestSupport() {
protected void doDropAll(final Connection connection, final String
markerTable) throws Exception {
}
};
*/
assertThat(DatabaseTestSupport.create(sessionFactory),
instanceOf(MySqlDropAllObjects.class));
}
@Test
public void testCreate_customDialect() {
Properties properties = new Properties();
properties.put("hibernate.dialect", "test");
Configuration hibernateConfig = createMock(Configuration.class);
expect(hibernateConfig.getProperties()).andReturn(properties);
replay(hibernateConfig);
/* EasyMock did not work here because getConfiguration is final. */
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
new DirectFieldAccessor(sessionFactory).setPropertyValue("configuration",
hibernateConfig);
DatabaseTestSupport dbSupport = new DatabaseTestSupport() {
protected void doDropAll(final Connection connection, final String
markerTable) throws Exception {
}
protected void doDeleteAll(final Connection connection, final String
markerTable) throws Exception {
}
protected void doInitializeAutoincrement(final Connection connection,
final int initialValue) throws Exception {
throw new UnsupportedOperationException();
}
};
DatabaseTestSupport.registerDialect("test", dbSupport);
assertThat(DatabaseTestSupport.create(sessionFactory),
instanceOf(DatabaseTestSupport.class));
}
}