From 605cbd804d558de5085f4c3889c70fc56c1953c8 Mon Sep 17 00:00:00 2001
From: Tharre <tharre3@gmail.com>
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')

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<Employee> 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