From 605cbd804d558de5085f4c3889c70fc56c1953c8 Mon Sep 17 00:00:00 2001 From: Tharre Date: Sun, 13 May 2018 23:53:30 +0200 Subject: Extract dbunit JDBC modifications to JdbcTestCase --- .../employee/EmployeePersistenceTest.java | 45 ++----------------- .../assignment/groupphase/util/JdbcTestCase.java | 50 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 42 deletions(-) create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java index 5099976..d4f5646 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java @@ -5,35 +5,21 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDat import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.io.InputStream; -import java.sql.Types; import java.time.LocalDate; import java.util.Set; -import org.dbunit.DBTestCase; -import org.dbunit.PropertiesBasedJdbcDatabaseTester; -import org.dbunit.database.DatabaseConfig; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; -import org.dbunit.dataset.datatype.DataType; -import org.dbunit.dataset.datatype.DataTypeException; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; import org.junit.Assert; -public class EmployeePersistenceTest extends DBTestCase { - - private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); - private static final String JDBC_URL = - "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; +public class EmployeePersistenceTest extends JdbcTestCase { private EmployeeDAO employeePersistence; public EmployeePersistenceTest() throws PersistenceException { - employeePersistence = new EmployeeDatabaseDao(new JDBCConnectionManager(JDBC_URL)); - - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + employeePersistence = new EmployeeDatabaseDao(jdbcConnectionManager); } @Override @@ -43,31 +29,6 @@ public class EmployeePersistenceTest extends DBTestCase { return new FlatXmlDataSetBuilder().build(res); } - @Override - protected void setUpDatabaseConfig(DatabaseConfig config) { - PostgresqlDataTypeFactory factory = - new PostgresqlDataTypeFactory() { - @Override - public boolean isEnumType(String sqlTypeName) { - if (sqlTypeName.equalsIgnoreCase("enum")) return true; - - return super.isEnumType(sqlTypeName); - } - - @Override - public DataType createDataType(int sqlType, String sqlTypeName) - throws DataTypeException { - if (isEnumType(sqlTypeName)) { - sqlType = Types.VARCHAR; - } - - return super.createDataType(sqlType, sqlTypeName); - } - }; - - config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); - } - public void testListEmployees() throws PersistenceException { Set employees = employeePersistence.list(); diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java new file mode 100644 index 0000000..5390841 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java @@ -0,0 +1,50 @@ +package at.ac.tuwien.sepm.assignment.groupphase.util; + +import java.sql.Types; +import org.dbunit.DBTestCase; +import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.database.DatabaseConfig; +import org.dbunit.dataset.datatype.DataType; +import org.dbunit.dataset.datatype.DataTypeException; +import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; + +public abstract class JdbcTestCase extends DBTestCase { + + private static final String JDBC_DRIVER = "org.h2.Driver"; + private static final String JDBC_URL = + "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; + + protected final JDBCConnectionManager jdbcConnectionManager; + + protected JdbcTestCase() { + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + + jdbcConnectionManager = new JDBCConnectionManager(JDBC_URL); + } + + @Override + protected void setUpDatabaseConfig(DatabaseConfig config) { + PostgresqlDataTypeFactory factory = + new PostgresqlDataTypeFactory() { + @Override + public boolean isEnumType(String sqlTypeName) { + if (sqlTypeName.equalsIgnoreCase("enum")) return true; + + return super.isEnumType(sqlTypeName); + } + + @Override + public DataType createDataType(int sqlType, String sqlTypeName) + throws DataTypeException { + if (isEnumType(sqlTypeName)) { + sqlType = Types.VARCHAR; + } + + return super.createDataType(sqlType, sqlTypeName); + } + }; + + config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); + } +} -- cgit v1.2.3-70-g09d2