aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java
diff options
context:
space:
mode:
authorTharre <tharre3@gmail.com>2018-06-20 22:07:36 +0200
committerTharre <tharre3@gmail.com>2018-06-20 22:07:36 +0200
commit0c995a05985da749d93aa56eba976c7fc621a4fa (patch)
tree5b80394920705aae5e2b6004c3dfbd839c8b8fa3 /src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java
parentf5bc7925a8fbbe247972a6f0e0571cc7e92fbefa (diff)
parente21feb3ac772a5394dc5381b58142c3c061de716 (diff)
downloadsepm-groupproject-master.tar.gz
sepm-groupproject-master.tar.xz
sepm-groupproject-master.zip
Merge branch 'develop'HEADv3.0master
Diffstat (limited to 'src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java')
-rw-r--r--src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java253
1 files changed, 253 insertions, 0 deletions
diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java
new file mode 100644
index 0000000..008ac57
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java
@@ -0,0 +1,253 @@
+package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao;
+
+import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException;
+import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException;
+import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Employee;
+import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Employee.EducationLevel;
+import at.ac.tuwien.sepm.assignment.groupphase.util.Helper;
+import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase;
+import java.io.InputStream;
+import java.time.LocalDate;
+import java.util.Set;
+import org.dbunit.Assertion;
+import org.dbunit.dataset.DataSetException;
+import org.dbunit.dataset.IDataSet;
+import org.dbunit.dataset.ITable;
+import org.dbunit.dataset.filter.DefaultColumnFilter;
+import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
+import org.dbunit.util.fileloader.FlatXmlDataFileLoader;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class EmployeeDAOTest extends JdbcTestCase {
+
+ private EmployeeDAO employeePersistence;
+
+ public EmployeeDAOTest() {
+ employeePersistence = new EmployeeDatabaseDAO(getJdbcConnectionManager());
+ }
+
+ @Override
+ protected IDataSet getDataSet() throws DataSetException {
+ InputStream res =
+ getClass()
+ .getClassLoader()
+ .getResourceAsStream("EmployeePersistenceTestBaseData.xml");
+ return new FlatXmlDataSetBuilder().build(res);
+ }
+
+ @Test
+ public void testListEmployees() throws PersistenceException {
+ Set<Employee> employees = employeePersistence.list();
+
+ Employee empOne =
+ Employee.builder()
+ .id(1)
+ .name("Adam")
+ .birthday(LocalDate.parse("2010-10-10"))
+ .educationLevel(EducationLevel.RS)
+ .isDriver(true)
+ .isPilot(false)
+ .build();
+
+ Employee empTwo =
+ Employee.builder()
+ .id(2)
+ .name("Max")
+ .birthday(LocalDate.parse("1990-11-11"))
+ .educationLevel(EducationLevel.NFS)
+ .isDriver(false)
+ .isPilot(false)
+ .build();
+
+ Employee empThree =
+ Employee.builder()
+ .id(3)
+ .name("Lisa")
+ .birthday(LocalDate.parse("1999-10-16"))
+ .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());
+ }
+
+ @Test
+ public void testEmployeeListNoElement() throws PersistenceException {
+ Set<Employee> employees = employeePersistence.list();
+
+ Employee empOne =
+ Employee.builder()
+ .id(10)
+ .name("Adam")
+ .birthday(LocalDate.parse("2010-10-10"))
+ .educationLevel(EducationLevel.RS)
+ .isDriver(true)
+ .isPilot(false)
+ .build();
+
+ Assert.assertFalse(employees.contains(empOne));
+ }
+
+ Employee validEmployee =
+ Employee.builder()
+ .name("Testperson")
+ .birthday(LocalDate.parse("2010-11-11"))
+ .educationLevel(EducationLevel.NA)
+ .isDriver(true)
+ .isPilot(false)
+ .build();
+
+ @Test
+ public void testAddValidEmployee_EmployeeVersion() throws Exception {
+
+ employeePersistence.add(validEmployee);
+
+ String[] excludedColumnsEmployeeVersion = new String[] {"ID"};
+ String tableEmployeeVersion = "EMPLOYEEVERSION";
+
+ // load actual and expected data set
+ IDataSet actualDataSet = getConnection().createDataSet();
+ IDataSet expectedDataSet =
+ new FlatXmlDataFileLoader().load("/testAddValidEmployee_expected.xml");
+
+ // extract employeeVersion table
+ ITable actualEmployeeVersionTable = actualDataSet.getTable(tableEmployeeVersion);
+ ITable expectedEmployeeVersionTable = expectedDataSet.getTable(tableEmployeeVersion);
+
+ // exclude 'id' column as it is an autogenerated value
+ ITable actualFilteredTable =
+ DefaultColumnFilter.excludedColumnsTable(
+ actualEmployeeVersionTable, excludedColumnsEmployeeVersion);
+ ITable expectedFilteredTable =
+ DefaultColumnFilter.excludedColumnsTable(
+ expectedEmployeeVersionTable, excludedColumnsEmployeeVersion);
+
+ Assertion.assertEquals(expectedFilteredTable, actualFilteredTable);
+ }
+
+ @Test
+ public void testAddValidEmployee_Employee() throws Exception {
+
+ employeePersistence.add(validEmployee);
+
+ String[] excludedColumnsEmployee = new String[] {"VERSION", "ID"};
+ String tableEmployee = "EMPLOYEE";
+
+ // load actual and expected data set
+ IDataSet actualDataSet = getConnection().createDataSet();
+ IDataSet expectedDataSet =
+ new FlatXmlDataFileLoader().load("/testAddValidEmployee_expected.xml");
+
+ // extract employee table
+ ITable actualEmployeeTable = actualDataSet.getTable(tableEmployee);
+ ITable expectedEmployeeTable = expectedDataSet.getTable(tableEmployee);
+
+ // exclude 'version' as it is an autogenerated value
+ ITable actualFilteredEmpTable =
+ DefaultColumnFilter.excludedColumnsTable(
+ actualEmployeeTable, excludedColumnsEmployee);
+ ITable expectedFilteredEmpTable =
+ DefaultColumnFilter.excludedColumnsTable(
+ expectedEmployeeTable, excludedColumnsEmployee);
+
+ Assertion.assertEquals(expectedFilteredEmpTable, actualFilteredEmpTable);
+ }
+
+ @Test
+ public void testAddValidEmployee_Join() throws Exception {
+
+ employeePersistence.add(validEmployee);
+
+ String[] excludedColumns = new String[] {"E_VERSION", "V_ID", "E_ID"};
+ String table = "EMP_JOIN";
+ String expectedXmlDataFileName = "testAddValidEmployeeJoin_expected.xml";
+
+ String sqlJoinEmployeeVersion =
+ "SELECT e.id AS E_ID, v.name AS V_NAME, v.birthday AS V_BIRTHDAY, "
+ + "v.educationLevel as V_EDUCATIONLEVEL, "
+ + "v.isDriver AS V_ISDRIVER, v.isPilot AS V_ISPILOT "
+ + "FROM Employee e "
+ + "JOIN EmployeeVersion v ON e.version = v.id";
+
+ ITable actualFilteredJoinData =
+ Helper.getActualFilteredQueryTableData(
+ getConnection(), table, sqlJoinEmployeeVersion, excludedColumns);
+
+ ITable expectedFilteredJoinData =
+ Helper.getExpectedFilteredTableData(
+ table, excludedColumns, expectedXmlDataFileName);
+
+ Assertion.assertEquals(expectedFilteredJoinData, actualFilteredJoinData);
+ }
+
+ Employee validUpdateEmployee =
+ Employee.builder()
+ .id(3)
+ .name("Lisa")
+ .birthday(LocalDate.parse("1999-10-16"))
+ .educationLevel(EducationLevel.NKA)
+ .isDriver(true)
+ .isPilot(true)
+ .build();
+
+ @Test
+ public void testUpdateValidEmployee_EmployeeVersion() throws Exception {
+
+ employeePersistence.update(validUpdateEmployee);
+
+ String[] excludedColumnsEmployeeVersion = new String[] {"ID"};
+ String tableEmployeeVersion = "EMPLOYEEVERSION";
+
+ ITable actualTableData =
+ Helper.getActualFilteredTableData(
+ getConnection(), tableEmployeeVersion, excludedColumnsEmployeeVersion);
+ ITable expedtedTableData =
+ Helper.getExpectedFilteredTableData(
+ tableEmployeeVersion,
+ excludedColumnsEmployeeVersion,
+ "testUpdateValidEmployee_expected.xml");
+
+ Assertion.assertEquals(expedtedTableData, actualTableData);
+ }
+
+ @Test
+ public void testUpdateValidEmployee_Employee() throws Exception {
+
+ employeePersistence.update(validUpdateEmployee);
+
+ String[] excludedColumns = new String[] {"VERSION"};
+ String tableName = "EMPLOYEE";
+ String expectedXmlDataFileName = "testUpdateValidEmployee_expected.xml";
+
+ ITable actualTableData =
+ Helper.getActualFilteredTableData(getConnection(), tableName, excludedColumns);
+
+ ITable expectedTableData =
+ Helper.getExpectedFilteredTableData(
+ tableName, excludedColumns, expectedXmlDataFileName);
+
+ Assertion.assertEquals(expectedTableData, actualTableData);
+ }
+
+ @Test(expected = ElementNotFoundException.class)
+ public void testUpdateNonExistingEmployee()
+ throws PersistenceException, ElementNotFoundException {
+
+ Employee nonExistentEmployee =
+ Employee.builder()
+ .id(1000)
+ .name("Lisa")
+ .birthday(LocalDate.parse("1999-10-16"))
+ .educationLevel(EducationLevel.NKA)
+ .isDriver(true)
+ .isPilot(true)
+ .build();
+
+ employeePersistence.update(nonExistentEmployee);
+ }
+}