From 783aad0bd343a0c5a008ed1433d9958ea8e5e7a2 Mon Sep 17 00:00:00 2001
From: Dominic Rogetzer <e1627756@student.tuwien.ac.at>
Date: Sat, 5 May 2018 15:49:41 +0200
Subject: Implement EmployeePersistenceTest with DBUnit

---
 .../employee/EmployeePersistenceTest.java          | 155 +++++++++++++++++++++
 1 file changed, 155 insertions(+)
 create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java

(limited to 'src/test/java')

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
new file mode 100644
index 0000000..f8fe0f3
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java
@@ -0,0 +1,155 @@
+package at.ac.tuwien.sepm.assignment.groupphase.employee;
+
+import static junit.framework.TestCase.fail;
+
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO;
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDatabaseDao;
+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 java.nio.charset.Charset;
+import java.sql.SQLException;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import org.dbunit.IDatabaseTester;
+import org.dbunit.JdbcDatabaseTester;
+import org.dbunit.dataset.DataSetException;
+import org.dbunit.dataset.IDataSet;
+import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
+import org.dbunit.operation.DatabaseOperation;
+import org.h2.tools.RunScript;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class EmployeePersistenceTest {
+
+    private static final String JDBC_DRIVER = org.h2.Driver.class.getName();
+    private static final String JDBC_URL = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1";
+    private static final String USER = "";
+    private static final String PASSWORD = "";
+
+    private EmployeeDAO employeePersistence;
+
+    public EmployeePersistenceTest() throws PersistenceException {
+        employeePersistence = new EmployeeDatabaseDao(new JDBCConnectionManager(JDBC_URL));
+    }
+
+    @BeforeClass
+    public static void createSchema() throws SQLException {
+        RunScript.execute(
+                JDBC_URL,
+                USER,
+                PASSWORD,
+                "classpath:sql/database.sql",
+                Charset.forName("UTF8"),
+                false);
+    }
+
+    @Before
+    public void importDataSet() throws Exception {
+        IDataSet dataSet = readDataSet();
+        cleanlyInsert(dataSet);
+    }
+
+    private IDataSet readDataSet() throws DataSetException {
+        return new FlatXmlDataSetBuilder()
+                .build(
+                        getClass()
+                                .getClassLoader()
+                                .getResourceAsStream("employeeServiceTestData.xml"));
+    }
+
+    private void cleanlyInsert(IDataSet dataSet) throws Exception {
+        IDatabaseTester databaseTester =
+                new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD);
+
+        databaseTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT);
+        databaseTester.setDataSet(dataSet);
+        databaseTester.onSetup();
+    }
+
+    @Test
+    public void testListEmployees() {
+
+        try {
+            List<Employee> employees = employeePersistence.list();
+
+            Employee empOne =
+                    Employee.builder()
+                            .id(1)
+                            .name("Adam")
+                            .birthday(
+                                    LocalDate.parse(
+                                            "10.10.2010",
+                                            DateTimeFormatter.ofPattern("dd.MM.yyyy")))
+                            .educationLevel(EducationLevel.RS)
+                            .isDriver(true)
+                            .isPilot(false)
+                            .build();
+
+            Employee empTwo =
+                    Employee.builder()
+                            .id(2)
+                            .name("Max")
+                            .birthday(
+                                    LocalDate.parse(
+                                            "11.11.1990",
+                                            DateTimeFormatter.ofPattern("dd.MM.yyyy")))
+                            .educationLevel(EducationLevel.NFS)
+                            .isDriver(false)
+                            .isPilot(false)
+                            .build();
+
+            Employee empThree =
+                    Employee.builder()
+                            .id(3)
+                            .name("Lisa")
+                            .birthday(
+                                    LocalDate.parse(
+                                            "16.10.1999",
+                                            DateTimeFormatter.ofPattern("dd.MM.yyyy")))
+                            .educationLevel(EducationLevel.NKI)
+                            .isDriver(true)
+                            .isPilot(false)
+                            .build();
+
+            Assert.assertTrue(employees.contains(empOne));
+            Assert.assertTrue(employees.contains(empTwo));
+            Assert.assertTrue(employees.contains(empThree));
+            Assert.assertEquals(3, employees.size());
+
+        } catch (PersistenceException e) {
+            fail();
+        }
+    }
+
+    @Test
+    public void testEmployeeListNoElement() {
+
+        try {
+            List<Employee> employees = employeePersistence.list();
+
+            Employee empOne =
+                    Employee.builder()
+                            .id(10)
+                            .name("Adam")
+                            .birthday(
+                                    LocalDate.parse(
+                                            "10.10.2010",
+                                            DateTimeFormatter.ofPattern("dd.MM.yyyy")))
+                            .educationLevel(EducationLevel.RS)
+                            .isDriver(true)
+                            .isPilot(false)
+                            .build();
+
+            Assert.assertFalse(employees.contains(empOne));
+
+        } catch (PersistenceException e) {
+            fail();
+        }
+    }
+}
-- 
cgit v1.2.3-70-g09d2