diff options
Diffstat (limited to 'src/test')
30 files changed, 1119 insertions, 415 deletions
diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeApplication.java index e9f4801..e1b3714 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeApplication.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;  import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;  import java.lang.invoke.MethodHandles; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeControllerTest.java index eb1a728..7f95950 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeControllerTest.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;  import static org.mockito.ArgumentMatchers.any;  import static org.mockito.Mockito.when; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleApplication.java index dcd88ec..ff46938 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleApplication.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleApplication.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.vehicle; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;  import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;  import java.lang.invoke.MethodHandles; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleControllerTest.java index 866ed74..08e3fde 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleControllerTest.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.vehicle; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;  import static org.mockito.ArgumentMatchers.any;  import static org.mockito.Mockito.when; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java new file mode 100644 index 0000000..5536c1c --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -0,0 +1,254 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; + +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.ElementNotFoundException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +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 EmployeePersistenceTest extends JdbcTestCase { + +    private EmployeeDAO employeePersistence; + +    public EmployeePersistenceTest() throws PersistenceException { +        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(); + +        System.out.println(LocalDate.parse("2010-10-10")); +        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); +    } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java new file mode 100644 index 0000000..726735d --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java @@ -0,0 +1,81 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; +import java.time.Instant; +import java.util.Collections; +import java.util.Set; +import org.dbunit.dataset.DataSetException; +import org.dbunit.dataset.IDataSet; +import org.junit.Test; + +public class OperationDAOTest extends JdbcTestCase { + +    private static final String[] COMPARE_TABLES = +            new String[] {"VehicleOperation", "Operation", "Vehicle", "VehicleVersion"}; + +    private OperationDAO operationDAO; + +    private final Operation o; + +    public OperationDAOTest() { +        this.operationDAO = new DBOperationDAO(getJdbcConnectionManager()); + +        Vehicle v1 = +                Vehicle.builder() +                        .id(1) +                        .name("RTW-1") +                        .constructionType(Vehicle.ConstructionType.HOCHDACH) +                        .type(Vehicle.VehicleType.RTW) +                        .status(Vehicle.Status.FREI_FUNK) +                        .hasNef(true) +                        .build(); + +        Vehicle v2 = v1.toBuilder().id(2).build(); +        Vehicle v3 = v1.toBuilder().id(3).build(); + +        o = +                Operation.builder() +                        .id(1) +                        .opCode("RD-2B0M") +                        .severity(Severity.B) +                        .status(Status.ACTIVE) +                        .vehicles(Set.of(v1, v2, v3)) +                        .created(Instant.now()) +                        .destination("New description") +                        .additionalInfo("Test") +                        .build(); +    } + +    @Override +    protected IDataSet getDataSet() throws DataSetException { +        return getDataSet("operationDAOUpdateSetup.xml"); +    } + +    @Test +    public void testUpdateNormal() throws Exception { +        operationDAO.update(o); + +        compareWith("operationDAOUpdateNormal.xml", COMPARE_TABLES); +    } + +    @Test(expected = ElementNotFoundException.class) +    public void testUpdateMissing() throws Exception { +        Operation op = o.toBuilder().id(73).build(); + +        operationDAO.update(op); +    } + +    @Test +    public void testUpdateRemoveVehicles() throws Exception { +        Operation op = o.toBuilder().vehicles(Collections.emptySet()).build(); + +        operationDAO.update(op); + +        compareWith("operationDAOUpdateRemoveVehicles.xml", COMPARE_TABLES); +    } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationPersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationPersistenceTest.java index be612d0..a5e4993 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationPersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationPersistenceTest.java @@ -1,8 +1,27 @@ -package at.ac.tuwien.sepm.assignment.groupphase.operation; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; + +import static junit.framework.TestCase.fail; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; +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.Instant; +import java.util.Arrays; +import java.util.Set; +import org.h2.tools.RunScript; +import org.junit.BeforeClass; +import org.junit.Test;  public class OperationPersistenceTest { -    /*private final OperationDAO operationDAO = +    private final OperationDAO operationDAO =              new DBOperationDAO(new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"));      @BeforeClass @@ -35,7 +54,7 @@ public class OperationPersistenceTest {                          .destination("Wiedner Hauptstraße 35, Wien")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of(vehicle)) +                        .vehicles(Set.of(vehicle))                          .build();          try {              operationDAO.add(operation); @@ -44,7 +63,7 @@ public class OperationPersistenceTest {          }      } -    /*@Test(expected = PersistenceException.class) +    @Test(expected = PersistenceException.class)      public void addFaultyOperationTest() throws PersistenceException {          Vehicle vehicle =                  Vehicle.builder() @@ -58,16 +77,15 @@ public class OperationPersistenceTest {          Operation operation =                  Operation.builder()                          .status(Status.ACTIVE) -                        .opCode("") +                        .opCode(String.valueOf(Arrays.stream(new int[200]).map(i -> 'a')))                          .created(Instant.now())                          .destination("Wiedner Hauptstraße 35, Wien")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of(vehicle)) +                        .vehicles(Set.of(vehicle))                          .build();          operationDAO.add(operation); -    }*/ -    /* +    }      @Test(expected = PersistenceException.class)      public void addFaultyOperation1Test() throws PersistenceException { @@ -94,7 +112,7 @@ public class OperationPersistenceTest {                                  "Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien ")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of(vehicle)) +                        .vehicles(Set.of(vehicle))                          .build();          operationDAO.add(operation);      } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java index 03059ff..09699c5 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java @@ -11,8 +11,8 @@ import java.nio.charset.Charset;  import java.sql.SQLException;  import java.time.Instant;  import java.time.LocalDate; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set;  import org.h2.tools.RunScript;  import org.junit.AfterClass;  import org.junit.BeforeClass; @@ -79,7 +79,7 @@ public class RegistrationDatabaseDAOTest {      @Test      public void addRegistrationsShouldSucceed() throws PersistenceException { -        List<Registration> registrations = new LinkedList<>(); +        Set<Registration> registrations = new HashSet<>();          /*          Vehicle vehicle = Vehicle.builder()                  .id(1) @@ -139,14 +139,14 @@ public class RegistrationDatabaseDAOTest {          registrations.add(registration2);          registrations.add(registration3); -        List<Long> returnvalues = registrationDAO.add(1, registrations); +        Set<Long> returnvalues = registrationDAO.add(1, registrations);          assertFalse(returnvalues.isEmpty()); // can be improved...      }      @Test      public void addRegistrationToInexistentVehicleShouldFail() throws PersistenceException {          thrown.expect(PersistenceException.class); -        List<Registration> registrations = new LinkedList<>(); +        Set<Registration> registrations = new HashSet<>();          Employee employee =                  Employee.builder()                          .id(1) diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CarAddTestService.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/CarAddTestService.java index de7a26a..fd8b43f 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CarAddTestService.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/CarAddTestService.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.vehicle; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service;  import static junit.framework.TestCase.fail;  import static org.mockito.ArgumentMatchers.any; @@ -8,8 +8,6 @@ import static org.mockito.Mockito.when;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDatabaseDao;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleServiceImpl;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java new file mode 100644 index 0000000..c49cd9d --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java @@ -0,0 +1,67 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +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.ElementNotFoundException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import java.time.LocalDate; +import org.junit.Assert; +import org.junit.Test; + +public class EmployeeServiceTest { + +    private final EmployeeDAO employeePersistence = mock(EmployeeDatabaseDao.class); +    private final EmployeeService employeeService = new EmployeeServiceImpl(employeePersistence); + +    private final Employee.Builder employeeBuilder = +            Employee.builder() +                    .name("Testperson") +                    .birthday(LocalDate.parse("1996-10-10")) +                    .educationLevel(EducationLevel.NKA) +                    .isDriver(true) +                    .isPilot(false); + +    public EmployeeServiceTest() throws PersistenceException { +        when(employeePersistence.add(any())).thenReturn(1L); +    } + +    @Test +    public void testAddValidEmployee() throws ServiceException, InvalidEmployeeException { + +        Employee employee = employeeBuilder.build(); +        Assert.assertThat(employeeService.add(employee), is(1L)); +    } + +    @Test(expected = InvalidEmployeeException.class) +    public void testAddInvalidEmployee() throws InvalidEmployeeException, ServiceException { + +        Employee employee = employeeBuilder.name("").build(); +        employeeService.add(employee); +    } + +    @Test +    public void testUpdateValidEmployee() throws ElementNotFoundException, PersistenceException { + +        Employee employee = employeeBuilder.build(); +        employeePersistence.update(employee); +    } + +    @Test(expected = ElementNotFoundException.class) +    public void testUpdateNonExistentEmployee() +            throws ElementNotFoundException, PersistenceException { + +        doThrow(ElementNotFoundException.class).when(employeePersistence).update(any()); +        Employee employee = employeeBuilder.id(1000).build(); +        employeePersistence.update(employee); +    } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java index 3668ef4..6bf2275 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTestConfiguration.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java @@ -1,9 +1,7 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service;  import static org.mockito.Mockito.mock; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeServiceImpl;  import org.springframework.context.annotation.Bean;  import org.springframework.context.annotation.Configuration;  import org.springframework.context.annotation.Primary; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java new file mode 100644 index 0000000..70185d3 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java @@ -0,0 +1,175 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import java.time.Instant; +import java.util.Collections; +import java.util.Set; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class OperationServiceTest { + +    @Mock private OperationDAO operationDAO; + +    @Mock private VehicleDAO vehicleDAO; + +    @InjectMocks private OperationServiceImpl operationService; + +    private Set<Vehicle> vehicles; +    private Vehicle v1, v2, v3, v4, v5; + +    @Before +    public void setUp() throws ElementNotFoundException, PersistenceException { +        v1 = +                Vehicle.builder() +                        .id(1) +                        .name("RTW-1") +                        .constructionType(Vehicle.ConstructionType.HOCHDACH) +                        .type(Vehicle.VehicleType.RTW) +                        .status(Vehicle.Status.FREI_FUNK) +                        .hasNef(true) +                        .build(); + +        v2 = +                Vehicle.builder() +                        .id(2) +                        .name("KTW-1") +                        .constructionType(Vehicle.ConstructionType.HOCHDACH) +                        .type(Vehicle.VehicleType.KTW) +                        .status(Vehicle.Status.FREI_WACHE) +                        .hasNef(true) +                        .build(); + +        v3 = +                Vehicle.builder() +                        .id(3) +                        .name("KTW-2") +                        .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH) +                        .type(Vehicle.VehicleType.KTW_B) +                        .status(Vehicle.Status.FREI_FUNK) +                        .hasNef(false) +                        .build(); + +        v4 = +                Vehicle.builder() +                        .id(4) +                        .name("BKTW-2") +                        .constructionType(Vehicle.ConstructionType.HOCHDACH) +                        .type(Vehicle.VehicleType.BKTW) +                        .status(Vehicle.Status.FREI_FUNK) +                        .hasNef(false) +                        .build(); + +        v5 = +                Vehicle.builder() +                        .id(5) +                        .name("NEF-1") +                        .constructionType(Vehicle.ConstructionType.NORMAL) +                        .type(Vehicle.VehicleType.NEF) +                        .status(Vehicle.Status.FREI_WACHE) +                        .hasNef(true) +                        .build(); + +        Vehicle v6 = +                Vehicle.builder() +                        .id(6) +                        .name("NAH-1") +                        .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH) +                        .type(Vehicle.VehicleType.NAH) +                        .status(Vehicle.Status.ABGEMELDET) +                        .hasNef(true) +                        .build(); + +        vehicles = Set.of(v1, v2, v3, v4, v5, v6); + +        Operation o = +                Operation.builder() +                        .id(1) +                        .opCode("ALP-95E7") +                        .severity(Severity.E) +                        .status(Status.ACTIVE) +                        .vehicles(Collections.singleton(v1)) +                        .created(Instant.now()) +                        .destination("Wiedner Hauptstraße 35, Wien") +                        .build(); + +        Operation o2 = o.toBuilder().status(Status.CANCELLED).build(); + +        when(operationDAO.get(anyLong())) +                .thenAnswer( +                        ans -> { +                            long arg = ans.getArgument(0); +                            if (arg == 1L) return o; +                            else if (arg == 5L) return o2; +                            else throw new ElementNotFoundException(""); +                        }); + +        when(vehicleDAO.get(anyLong())) +                .thenAnswer( +                        ans -> { +                            int arg = ((Long) ans.getArgument(0)).intValue(); +                            return vehicles.stream() +                                    .filter(v -> v.id() == arg) +                                    .findFirst() +                                    .orElseThrow(() -> new ElementNotFoundException("")); +                        }); +    } + +    @Test +    public void requestNormal() throws Exception { +        Set<Long> vehicleIds = Set.of(2L, 3L, 4L, 5L); +        operationService.requestVehicles(1, vehicleIds); + +        Operation result = +                operationDAO.get(1).toBuilder().vehicles(Set.of(v1, v2, v3, v4, v5)).build(); +        verify(operationDAO, times(1)).update(result); +        verify(operationDAO, times(0)).get(6L); +    } + +    @Test +    public void requestExistingVehicle() throws Exception { +        operationService.requestVehicles(1, Set.of(1L)); + +        Operation result = operationDAO.get(1); +        verify(operationDAO, times(0)).update(result); +    } + +    @Test(expected = InvalidVehicleException.class) +    public void requestInvalidVehicle() throws Exception { +        operationService.requestVehicles(1, Set.of(5L, 6L)); +    } + +    @Test(expected = InvalidOperationException.class) +    public void requestInvalidOperation() throws Exception { +        operationService.requestVehicles(2, Set.of(1L)); +    } + +    @Test(expected = InvalidVehicleException.class) +    public void requestInactiveVehicle() throws Exception { +        operationService.requestVehicles(1, Set.of(6L)); +    } + +    @Test(expected = InvalidOperationException.class) +    public void requestInactiveOperation() throws Exception { +        operationService.requestVehicles(5, Set.of(1L)); +    } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java index fc10553..7b574a1 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.operation; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service;  import static junit.framework.TestCase.fail;  import static org.hamcrest.CoreMatchers.is; @@ -7,25 +7,26 @@ import static org.mockito.Mockito.mock;  import static org.mockito.Mockito.when;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationServiceImpl;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;  import java.time.Instant; -import java.util.List; +import java.util.Set;  import org.junit.Assert;  import org.junit.Test;  public class OperationServiceUnitTest {      private final OperationDAO operationDAO = mock(OperationDAO.class); -    private final OperationService operationService = new OperationServiceImpl(operationDAO); +    private final VehicleDAO vehicleDAO = mock(VehicleDAO.class); +    private final OperationService operationService = +            new OperationServiceImpl(operationDAO, vehicleDAO);      @Test      public void addOperationTest() { @@ -51,7 +52,7 @@ public class OperationServiceUnitTest {                          .destination("Wiedner Hauptstraße 35, Wien")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of(vehicle)) +                        .vehicles(Set.of(vehicle))                          .build();          try {              Assert.assertThat(operationService.add(operation), is(1L)); @@ -87,7 +88,7 @@ public class OperationServiceUnitTest {                          .destination("Wiedner Hauptstraße 35, Wien")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of(vehicle, vehicle1)) +                        .vehicles(Set.of(vehicle, vehicle1))                          .build();          try {              Assert.assertThat(operationService.add(operation), is(1L)); @@ -106,7 +107,7 @@ public class OperationServiceUnitTest {                          .destination("Wiedner Hauptstraße 35, Wien")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of()) +                        .vehicles(Set.of())                          .build();          try {              Assert.assertThat(operationService.add(operation), is(1L)); @@ -125,7 +126,7 @@ public class OperationServiceUnitTest {                          .destination("")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of()) +                        .vehicles(Set.of())                          .build();          try {              Assert.assertThat(operationService.add(operation), is(1L)); @@ -144,7 +145,7 @@ public class OperationServiceUnitTest {                          .destination("Römergasse 7, 2500 Baden")                          .additionalInfo("HTU Wien")                          .severity(Severity.B) -                        .vehicles(List.of()) +                        .vehicles(Set.of())                          .build();          try {              Assert.assertThat(operationService.add(operation), is(1L)); diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java index f3efbef..95d8d77 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java @@ -1,25 +1,28 @@  package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; -import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong;  import static org.mockito.Mockito.when;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.RegistrationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO;  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.einsatzverwaltung.dto.Registration;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Builder;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidRegistrationException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;  import java.time.Instant;  import java.time.LocalDate;  import java.time.temporal.ChronoUnit; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set;  import org.junit.Before;  import org.junit.Rule;  import org.junit.Test; @@ -31,36 +34,33 @@ import org.mockito.junit.MockitoRule;  public class RegistrationServiceImplTest { -    @Mock RegistrationDAO daoMock; +    @Mock private RegistrationDAO registrationDAO; -    @Mock VehicleService vehicleService; +    @Mock private VehicleDAO vehicleDAO;      @Rule public MockitoRule mockitoRule = MockitoJUnit.rule();      @Rule public ExpectedException thrown = ExpectedException.none();      @Before -    public void setUp() throws ServiceException { +    public void setUp() throws ElementNotFoundException, PersistenceException {          MockitoAnnotations.initMocks(this); -        when(vehicleService.list(any())) -                .thenReturn( -                        Arrays.asList( -                                Vehicle.builder() -                                        .id(1) -                                        .name("RTW-1") -                                        .constructionType(ConstructionType.HOCHDACH) -                                        .status(Status.ABGEMELDET) -                                        .type(VehicleType.RTW) -                                        .hasNef(true) -                                        .build())); +        Builder b = +                Vehicle.builder() +                        .name("RTW-1") +                        .constructionType(ConstructionType.HOCHDACH) +                        .status(Status.ABGEMELDET) +                        .type(VehicleType.RTW) +                        .hasNef(true); +        when(vehicleDAO.get(anyLong())).thenAnswer(ans -> b.id(ans.getArgument(0)).build());      }      @Test      public void addValidRegistrationsShouldSucceed()              throws InvalidRegistrationException, ServiceException, InvalidVehicleException {          RegistrationService registrationService = -                new RegistrationServiceImpl(daoMock, vehicleService); -        List<Registration> registrations = new LinkedList<>(); +                new RegistrationServiceImpl(registrationDAO, vehicleDAO); +        Set<Registration> registrations = new HashSet<>();          Vehicle vehicle =                  Vehicle.builder()                          .id(1) @@ -116,8 +116,8 @@ public class RegistrationServiceImplTest {              throws InvalidRegistrationException, ServiceException, InvalidVehicleException {          thrown.expect(InvalidRegistrationException.class);          RegistrationService registrationService = -                new RegistrationServiceImpl(daoMock, vehicleService); -        List<Registration> registrations = new LinkedList<>(); +                new RegistrationServiceImpl(registrationDAO, vehicleDAO); +        Set<Registration> registrations = new HashSet<>();          Vehicle vehicle =                  Vehicle.builder()                          .id(1) diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java index ccd1e5d..895973a 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java @@ -1,9 +1,7 @@ -package at.ac.tuwien.sepm.assignment.groupphase.vehicle; +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service;  import static org.mockito.Mockito.mock; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleServiceImpl;  import org.springframework.context.annotation.Bean;  import org.springframework.context.annotation.Configuration;  import org.springframework.context.annotation.Primary; 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 deleted file mode 100644 index f8fe0f3..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java +++ /dev/null @@ -1,155 +0,0 @@ -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(); -        } -    } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java deleted file mode 100644 index 47328b3..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; - -import static junit.framework.TestCase.fail; -import static org.hamcrest.CoreMatchers.is; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -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.einsatzverwaltung.service.EmployeeService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeServiceImpl; -import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import java.time.LocalDate; -import org.junit.Assert; -import org.junit.Test; - -public class EmployeeServiceTest { - -    private final EmployeeDAO employeePersistence = mock(EmployeeDatabaseDao.class); -    private final EmployeeService employeeService = new EmployeeServiceImpl(employeePersistence); - -    public EmployeeServiceTest() throws PersistenceException { -        when(employeePersistence.add(any())).thenReturn(1L); -    } - -    @Test -    public void testAddValidEmployee() { - -        Employee employee = -                Employee.builder() -                        .name("Testperson") -                        .birthday(LocalDate.MIN) -                        .educationLevel(EducationLevel.NA) -                        .isDriver(true) -                        .isPilot(false) -                        .build(); - -        try { -            Assert.assertThat(employeeService.add(employee), is(1L)); -        } catch (InvalidEmployeeException | ServiceException e) { -            fail(); -        } -    } - -    @Test(expected = InvalidEmployeeException.class) -    public void testAddInvalidEmployee() throws InvalidEmployeeException { - -        Employee employee = -                Employee.builder() -                        .name("") -                        .birthday(LocalDate.MIN) -                        .educationLevel(EducationLevel.NA) -                        .isDriver(true) -                        .isPilot(false) -                        .build(); - -        try { -            employeeService.add(employee); -        } catch (ServiceException e) { -            fail(); -        } -    } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java deleted file mode 100644 index 286ee07..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java +++ /dev/null @@ -1,130 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.operation; - -public class OperationServiceComponentTest { - -    /*private final OperationDAO operationDAO = -            new DBOperationDAO(new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")); -    private final OperationService operationService = new OperationServiceImpl(operationDAO); - -    @Test -    public void addOperationTest() { -        Vehicle vehicle = -                Vehicle.builder() -                        .status(Vehicle.Status.FREI_FUNK) -                        .constructionType(ConstructionType.HOCHDACH) -                        .name("BKTW_123") -                        .hasNef(true) -                        .type(VehicleType.BKTW) -                        .build(); - -        Operation operation = -                Operation.builder() -                        .status(Status.ACTIVE) -                        .opCode("ALP-95E7") -                        .created(Instant.now()) -                        .destination("Wiedner Hauptstraße 35, Wien") -                        .additionalInfo("HTU Wien") -                        .severity(Severity.B) -                        .vehicles(List.of(vehicle)) -                        .build(); -        try { -            // TODO: OPERATION DOES NOT WORK -            Assert.assertThat(operationService.add(operation), is(1L)); -        } catch (InvalidOperationException | ServiceException e) { -            fail(); -        } -    } - -    @Test(expected = InvalidOperationException.class) -    public void addFaultyOperationTest() throws InvalidOperationException { -        Vehicle vehicle = -                Vehicle.builder() -                        .status(Vehicle.Status.FREI_FUNK) -                        .constructionType(ConstructionType.HOCHDACH) -                        .name("BKTW_123") -                        .hasNef(true) -                        .type(VehicleType.BKTW) -                        .build(); -        Vehicle vehicle1 = -                Vehicle.builder() -                        .status(Vehicle.Status.ABGEMELDET) -                        .constructionType(ConstructionType.HOCHDACH) -                        .name("BKTW_123") -                        .hasNef(true) -                        .type(VehicleType.BKTW) -                        .build(); - -        Operation operation = -                Operation.builder() -                        .status(Status.ACTIVE) -                        .opCode("ALP-95E7") -                        .created(Instant.now()) -                        .destination("Wiedner Hauptstraße 35, Wien") -                        .additionalInfo("HTU Wien") -                        .severity(Severity.B) -                        .vehicles(List.of(vehicle, vehicle1)) -                        .build(); -        try { -            Assert.assertThat(operationService.add(operation), is(1L)); -        } catch (ServiceException e) { -            fail(); -        } -    } - -    @Test(expected = InvalidOperationException.class) -    public void addFaultyOperation2Test() throws InvalidOperationException { -        Operation operation = -                Operation.builder() -                        .status(Status.ACTIVE) -                        .opCode("ALP-95E7") -                        .created(Instant.now()) -                        .destination("Wiedner Hauptstraße 35, Wien") -                        .additionalInfo("HTU Wien") -                        .severity(Severity.B) -                        .vehicles(List.of()) -                        .build(); -        try { -            Assert.assertThat(operationService.add(operation), is(1L)); -        } catch (ServiceException e) { -            e.printStackTrace(); -        } -    } - -    @Test(expected = InvalidOperationException.class) -    public void addFaultyOperation3Test() throws InvalidOperationException { -        Operation operation = -                Operation.builder() -                        .status(Status.ACTIVE) -                        .opCode("ALP-95E7") -                        .created(Instant.now()) -                        .destination("") -                        .additionalInfo("HTU Wien") -                        .severity(Severity.B) -                        .vehicles(List.of()) -                        .build(); -        try { -            Assert.assertThat(operationService.add(operation), is(1L)); -        } catch (ServiceException e) { -            e.printStackTrace(); -        } -    } - -    @Test(expected = InvalidOperationException.class) -    public void addFaultyOperation4Test() throws InvalidOperationException { -        Operation operation = -                Operation.builder() -                        .status(Status.ACTIVE) -                        .opCode("") -                        .created(Instant.now()) -                        .destination("Römergasse 7, 2500 Baden") -                        .additionalInfo("HTU Wien") -                        .severity(Severity.B) -                        .vehicles(List.of()) -                        .build(); -        try { -            Assert.assertThat(operationService.add(operation), is(1L)); -        } catch (ServiceException e) { -            e.printStackTrace(); -        } -    }*/ -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java index b808206..618b06f 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java @@ -6,6 +6,12 @@ import java.util.List;  import javafx.stage.Modality;  import javafx.stage.Stage;  import javafx.stage.Window; +import org.dbunit.database.IDatabaseConnection; +import org.dbunit.dataset.DataSetException; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; +import org.dbunit.dataset.filter.DefaultColumnFilter; +import org.dbunit.util.fileloader.FlatXmlDataFileLoader;  import org.testfx.api.FxRobotContext;  public class Helper { @@ -25,4 +31,39 @@ public class Helper {                          .findFirst()                          .orElse(null);      } + +    public static ITable getActualFilteredTableData( +            IDatabaseConnection connection, String tableName, String[] excludedColumns) +            throws Exception { +        IDataSet actualDataSet = connection.createDataSet(); +        ITable actualTable = actualDataSet.getTable(tableName); +        return getFilteredTableData(actualTable, excludedColumns); +    } + +    public static ITable getExpectedFilteredTableData( +            String tableName, String[] excludedColumns, String expectedXmlDataFileName) +            throws Exception { +        IDataSet dataSet = loadDataSet(expectedXmlDataFileName); +        ITable table = dataSet.getTable(tableName); +        return getFilteredTableData(table, excludedColumns); +    } + +    public static ITable getActualFilteredQueryTableData( +            IDatabaseConnection connection, +            String resultTableName, +            String sql, +            String[] excludedColumns) +            throws Exception { +        ITable queryData = connection.createQueryTable(resultTableName, sql); +        return getFilteredTableData(queryData, excludedColumns); +    } + +    private static ITable getFilteredTableData(ITable tableData, String[] excludedColumns) +            throws DataSetException { +        return DefaultColumnFilter.excludedColumnsTable(tableData, excludedColumns); +    } + +    private static IDataSet loadDataSet(String fileName) { +        return new FlatXmlDataFileLoader().load("/" + fileName); +    }  } 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..daf4ec4 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java @@ -0,0 +1,153 @@ +package at.ac.tuwien.sepm.assignment.groupphase.util; + +import static org.dbunit.Assertion.assertEquals; + +import java.io.InputStream; +import java.lang.invoke.MethodHandles; +import java.sql.SQLException; +import java.sql.Types; +import org.dbunit.DefaultDatabaseTester; +import org.dbunit.IDatabaseTester; +import org.dbunit.IOperationListener; +import org.dbunit.database.DatabaseConfig; +import org.dbunit.database.DatabaseConnection; +import org.dbunit.database.IDatabaseConnection; +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.dbunit.operation.DatabaseOperation; +import org.junit.After; +import org.junit.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component +public abstract class JdbcTestCase { + +    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); +    private static final String JDBC_URL = +            "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; + +    private IDatabaseTester dbTester; +    private IDatabaseConnection connection; +    private IOperationListener operationListener; +    private JDBCConnectionManager jdbcConnectionManager; + +    protected JdbcTestCase() { +        jdbcConnectionManager = new JDBCConnectionManager(JDBC_URL); +    } + +    protected abstract IDataSet getDataSet() throws Exception; + +    protected IDataSet getDataSet(String xmlname) throws DataSetException { +        InputStream res = getClass().getClassLoader().getResourceAsStream(xmlname); +        FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder(); +        builder.setColumnSensing(true); +        return builder.build(res); +    } + +    protected JDBCConnectionManager getJdbcConnectionManager() { +        return jdbcConnectionManager; +    } + +    protected IDatabaseConnection getConnection() throws Exception { +        if (connection == null) +            connection = new DatabaseConnection(jdbcConnectionManager.getConnection(), null, true); + +        return connection; +    } + +    private IOperationListener getOperationListener() { +        if (operationListener == null) { +            operationListener = +                    new IOperationListener() { +                        @Override +                        public void connectionRetrieved(IDatabaseConnection connection) { +                            setUpDatabaseConfig(connection.getConfig()); +                        } + +                        @Override +                        public void operationSetUpFinished(IDatabaseConnection connection) { +                            LOG.debug("operationSetUpFinished(connection={}) - start", connection); +                        } + +                        @Override +                        public void operationTearDownFinished(IDatabaseConnection connection) { +                            LOG.debug( +                                    "operationTearDownFinished(connection={}) - start", connection); +                            try { +                                connection.close(); +                            } catch (SQLException e) { +                                LOG.error("Failed to close connection:" + e); +                                e.printStackTrace(); +                            } +                        } +                    }; +        } + +        return operationListener; +    } + +    // override DBUnit's enum handling +    private 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); +    } + +    protected void compareWith(String xmlname, String[] tables) throws Exception { +        InputStream res = getClass().getClassLoader().getResourceAsStream(xmlname); +        IDataSet actual = getConnection().createDataSet(); +        IDataSet expected = new FlatXmlDataSetBuilder().build(res); + +        for (String table : tables) { +            assertEquals(actual.getTable(table), expected.getTable(table)); +        } +    } + +    @Before +    public void setUp() throws Exception { +        IDataSet dataSet = getDataSet(); + +        dbTester = new DefaultDatabaseTester(getConnection()); +        getOperationListener().connectionRetrieved(getConnection()); + +        dbTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT); +        dbTester.setTearDownOperation(DatabaseOperation.REFRESH); +        dbTester.setDataSet(dataSet); +        dbTester.setOperationListener(getOperationListener()); +        dbTester.onSetup(); +    } + +    @After +    public void tearDown() throws Exception { +        try { +            dbTester.onTearDown(); +            getConnection().close(); +        } finally { +            dbTester = null; +        } +    } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java new file mode 100644 index 0000000..81ebf63 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java @@ -0,0 +1,153 @@ +package at.ac.tuwien.sepm.assignment.groupphase.vehicle; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDatabaseDao; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; +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.util.Helper; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; +import java.io.InputStream; +import java.util.Set; +import org.dbunit.Assertion; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.junit.Assert; +import org.junit.Test; + +public class VehiclePersistenceTest extends JdbcTestCase { + +    private VehicleDAO vehicleDAO; + +    private Vehicle validUpdateVehicle = +            Vehicle.builder() +                    .hasNef(true) +                    .constructionType(ConstructionType.HOCHDACH) +                    .type(VehicleType.RTW) +                    .id(2) +                    .name("RTW-2") +                    .status(Status.ABGEMELDET) +                    .build(); + +    public VehiclePersistenceTest() { +        vehicleDAO = new VehicleDatabaseDao(getJdbcConnectionManager()); +    } + +    @Override +    protected IDataSet getDataSet() throws Exception { +        InputStream res = getClass().getClassLoader().getResourceAsStream("vehicleTestData.xml"); +        return new FlatXmlDataSetBuilder().build(res); +    } + +    @Test +    public void testListVehicle() throws PersistenceException { +        Set<Vehicle> vehicles = vehicleDAO.list(); + +        Vehicle v1 = +                Vehicle.builder() +                        .id(1) +                        .constructionType(ConstructionType.HOCHDACH) +                        .name("RTW-1") +                        .hasNef(true) +                        .status(Status.ABGEMELDET) +                        .type(VehicleType.RTW) +                        .build(); +        Vehicle v2 = +                Vehicle.builder() +                        .id(2) +                        .constructionType(ConstructionType.MITTELHOCHDACH) +                        .name("KTW-2") +                        .hasNef(false) +                        .status(Status.FREI_WACHE) +                        .type(VehicleType.KTW) +                        .build(); +        Vehicle v3 = +                Vehicle.builder() +                        .id(3) +                        .constructionType(ConstructionType.NORMAL) +                        .name("NEF-3") +                        .hasNef(false) +                        .status(Status.FREI_FUNK) +                        .type(VehicleType.NEF) +                        .build(); + +        Assert.assertTrue(vehicles.contains(v1)); +        Assert.assertTrue(vehicles.contains(v2)); +        Assert.assertTrue(vehicles.contains(v3)); +        Assert.assertEquals(3, vehicles.size()); +    } + +    @Test +    public void testVehicleListNoElement() throws PersistenceException { +        Set<Vehicle> vehicles = vehicleDAO.list(); + +        Vehicle v1 = +                Vehicle.builder() +                        .id(30) +                        .constructionType(ConstructionType.NORMAL) +                        .name("NEF-3") +                        .hasNef(false) +                        .status(Status.FREI_FUNK) +                        .type(VehicleType.NEF) +                        .build(); + +        Assert.assertFalse(vehicles.contains(v1)); +    } + +    @Test +    public void testUpdateValid_VehicleVersion() throws Exception { +        vehicleDAO.update(validUpdateVehicle); + +        String[] excludedColumnsVehicleVersion = new String[] {"ID", "NAME"}; +        String tableVehicleVersion = "VEHICLEVERSION"; + +        ITable actualTableData = +                Helper.getActualFilteredTableData( +                        getConnection(), tableVehicleVersion, excludedColumnsVehicleVersion); + +        ITable expectedTableData = +                Helper.getExpectedFilteredTableData( +                        tableVehicleVersion, +                        excludedColumnsVehicleVersion, +                        "vehicleTestUpdateExpectedData.xml"); +        Assertion.assertEquals(expectedTableData, actualTableData); +    } + +    @Test +    public void testUpdateValid_Vehicle() throws Exception { +        vehicleDAO.update(validUpdateVehicle); + +        String[] excludedColumnsVehicleVersion = new String[] {"VERSION", "STATUS"}; +        String tableVehicleVersion = "VEHICLE"; + +        ITable actualTableData = +                Helper.getActualFilteredTableData( +                        getConnection(), tableVehicleVersion, excludedColumnsVehicleVersion); + +        ITable expectedTableData = +                Helper.getExpectedFilteredTableData( +                        tableVehicleVersion, +                        excludedColumnsVehicleVersion, +                        "vehicleTestUpdateExpectedData.xml"); +        Assertion.assertEquals(expectedTableData, actualTableData); +    } + +    @Test(expected = ElementNotFoundException.class) +    public void testUpdateNonExistingVehicle() +            throws PersistenceException, ElementNotFoundException { +        Vehicle nonExistentVehicle = +                Vehicle.builder() +                        .id(35) +                        .constructionType(ConstructionType.NORMAL) +                        .name("NEF-3") +                        .hasNef(false) +                        .status(Status.FREI_FUNK) +                        .type(VehicleType.NEF) +                        .build(); +        vehicleDAO.update(nonExistentVehicle); +    } +} diff --git a/src/test/resources/EmployeePersistenceTestBaseData.xml b/src/test/resources/EmployeePersistenceTestBaseData.xml new file mode 100644 index 0000000..a9553a2 --- /dev/null +++ b/src/test/resources/EmployeePersistenceTestBaseData.xml @@ -0,0 +1,12 @@ +<dataset> +<EmployeeVersion id="10" name="Adam" birthday="2010-10-10" educationlevel="RS" isDriver="true" +  isPilot="false"/> +<EmployeeVersion id="20" name="Max" birthday="1990-11-11" educationlevel="NFS" isDriver="false" +  isPilot="false"/> +<EmployeeVersion id="30" name="Lisa" birthday="1999-10-16" educationlevel="NKI" isDriver="true" +  isPilot="false"/> + +<Employee id="1" version="10" /> +<Employee id="2" version="20" /> +<Employee id="3" version="30" /> +</dataset>
\ No newline at end of file diff --git a/src/test/resources/operationDAOUpdateNormal.xml b/src/test/resources/operationDAOUpdateNormal.xml new file mode 100644 index 0000000..025cdc2 --- /dev/null +++ b/src/test/resources/operationDAOUpdateNormal.xml @@ -0,0 +1,19 @@ +<dataset> +  <Operation id="1" opCode="RD-2B0M" severity="B" created="2000-01-01" +    destination="New description" status="ACTIVE" additionalInfo="Test"/> + +  <VehicleVersion id="1" name="RTW-1" constructionType="HOCHDACH" type="RTW" hasNef="true"/> +  <VehicleVersion id="2" name="KTW-1" constructionType="HOCHDACH" type="KTW" hasNef="true"/> +  <VehicleVersion id="3" name="KTW-2" constructionType="MITTELHOCHDACH" type="KTW_B" hasNef="false"/> +  <VehicleVersion id="4" name="BKTW-2" constructionType="HOCHDACH" type="BKTW" hasNef="false"/> +  <VehicleVersion id="5" name="NEF-1" constructionType="NORMAL" type="NEF" hasNef="true"/> + +  <Vehicle id="1" version="1" status="FREI_FUNK"/> +  <Vehicle id="2" version="2" status="FREI_WACHE"/> +  <Vehicle id="3" version="3" status="FREI_FUNK"/> +  <Vehicle id="4" version="4" status="FREI_WACHE"/> + +  <VehicleOperation vehicleId="1" operationId="1"/> +  <VehicleOperation vehicleId="2" operationId="1"/> +  <VehicleOperation vehicleId="3" operationId="1"/> +</dataset> diff --git a/src/test/resources/operationDAOUpdateRemoveVehicles.xml b/src/test/resources/operationDAOUpdateRemoveVehicles.xml new file mode 100644 index 0000000..6f171b4 --- /dev/null +++ b/src/test/resources/operationDAOUpdateRemoveVehicles.xml @@ -0,0 +1,17 @@ +<dataset> +  <Operation id="1" opCode="RD-2B0M" severity="B" created="2000-01-01" +    destination="New description" status="ACTIVE" additionalInfo="Test"/> + +  <VehicleVersion id="1" name="RTW-1" constructionType="HOCHDACH" type="RTW" hasNef="true"/> +  <VehicleVersion id="2" name="KTW-1" constructionType="HOCHDACH" type="KTW" hasNef="true"/> +  <VehicleVersion id="3" name="KTW-2" constructionType="MITTELHOCHDACH" type="KTW_B" hasNef="false"/> +  <VehicleVersion id="4" name="BKTW-2" constructionType="HOCHDACH" type="BKTW" hasNef="false"/> +  <VehicleVersion id="5" name="NEF-1" constructionType="NORMAL" type="NEF" hasNef="true"/> + +  <Vehicle id="1" version="1" status="FREI_FUNK"/> +  <Vehicle id="2" version="2" status="FREI_WACHE"/> +  <Vehicle id="3" version="3" status="FREI_FUNK"/> +  <Vehicle id="4" version="4" status="FREI_WACHE"/> + +  <VehicleOperation /> +</dataset> diff --git a/src/test/resources/operationDAOUpdateSetup.xml b/src/test/resources/operationDAOUpdateSetup.xml new file mode 100644 index 0000000..23d1a25 --- /dev/null +++ b/src/test/resources/operationDAOUpdateSetup.xml @@ -0,0 +1,17 @@ +<dataset> +  <Operation id="1" opCode="ALP-95E7" severity="E" created="2000-01-01" +    destination="Wiedner Hauptstraße 35, Wien" status="ACTIVE"/> + +  <VehicleVersion id="1" name="RTW-1" constructionType="HOCHDACH" type="RTW" hasNef="true"/> +  <VehicleVersion id="2" name="KTW-1" constructionType="HOCHDACH" type="KTW" hasNef="true"/> +  <VehicleVersion id="3" name="KTW-2" constructionType="MITTELHOCHDACH" type="KTW_B" hasNef="false"/> +  <VehicleVersion id="4" name="BKTW-2" constructionType="HOCHDACH" type="BKTW" hasNef="false"/> +  <VehicleVersion id="5" name="NEF-1" constructionType="NORMAL" type="NEF" hasNef="true"/> + +  <Vehicle id="1" version="1" status="FREI_FUNK"/> +  <Vehicle id="2" version="2" status="FREI_WACHE"/> +  <Vehicle id="3" version="3" status="FREI_FUNK"/> +  <Vehicle id="4" version="4" status="FREI_WACHE"/> + +  <VehicleOperation /> +</dataset> diff --git a/src/test/resources/testAddValidEmployeeJoin_expected.xml b/src/test/resources/testAddValidEmployeeJoin_expected.xml new file mode 100644 index 0000000..0977a95 --- /dev/null +++ b/src/test/resources/testAddValidEmployeeJoin_expected.xml @@ -0,0 +1,17 @@ +<dataset> +  <EMP_JOIN e_id="1" e_version="10" v_id="10" v_name="Adam" v_birthday="2010-10-10" +    v_educationlevel="RS" v_isDriver="true" +    v_isPilot="false"/> +  <EMP_JOIN e_id="2" e_version="20" v_id="20" v_name="Max" v_birthday="1990-11-11" +    v_educationlevel="NFS" +    v_isDriver="false" +    v_isPilot="false"/> +  <EMP_JOIN e_id="3" e_version="30" v_id="30" v_name="Lisa" v_birthday="1999-10-16" +    v_educationlevel="NKI" +    v_isDriver="true" +    v_isPilot="false"/> +  <EMP_JOIN e_id="4" e_version="40" v_id="40" v_name="Testperson" v_birthday="2010-11-11" +    v_educationlevel="NA" +    v_isDriver="true" +    v_isPilot="false"/> +</dataset>
\ No newline at end of file diff --git a/src/test/resources/testAddValidEmployee_expected.xml b/src/test/resources/testAddValidEmployee_expected.xml new file mode 100644 index 0000000..41ecf4e --- /dev/null +++ b/src/test/resources/testAddValidEmployee_expected.xml @@ -0,0 +1,16 @@ +<dataset> +  <EmployeeVersion id="10" name="Adam" birthday="2010-10-10" educationlevel="RS" isDriver="true" +    isPilot="false"/> +  <EmployeeVersion id="20" name="Max" birthday="1990-11-11" educationlevel="NFS" isDriver="false" +    isPilot="false"/> +  <EmployeeVersion id="30" name="Lisa" birthday="1999-10-16" educationlevel="NKI" isDriver="true" +    isPilot="false"/> +  <EmployeeVersion id="40" name="Testperson" birthday="2010-11-11" educationlevel="NA" +    isDriver="true" +    isPilot="false"/> + +  <Employee id="1" version="10"/> +  <Employee id="2" version="20"/> +  <Employee id="3" version="30"/> +  <Employee id="4" version="40"/> +</dataset>
\ No newline at end of file diff --git a/src/test/resources/employeeServiceTestData.xml b/src/test/resources/testUpdateValidEmployee_expected.xml index c21fde6..4a35a7b 100644 --- a/src/test/resources/employeeServiceTestData.xml +++ b/src/test/resources/testUpdateValidEmployee_expected.xml @@ -5,8 +5,10 @@      isPilot="false"/>    <EmployeeVersion id="30" name="Lisa" birthday="1999-10-16" educationlevel="NKI" isDriver="true"      isPilot="false"/> +  <EmployeeVersion id="31" name="Lisa" birthday="1999-10-16" educationlevel="NKA" isDriver="true" +    isPilot="true"/> -  <Employee id="1" version="10" /> -  <Employee id="2" version="20" /> -  <Employee id="3" version="30" /> +  <Employee id="1" version="10"/> +  <Employee id="2" version="20"/> +  <Employee id="3" version="31"/>  </dataset>
\ No newline at end of file diff --git a/src/test/resources/vehicleTestData.xml b/src/test/resources/vehicleTestData.xml new file mode 100644 index 0000000..19d25ad --- /dev/null +++ b/src/test/resources/vehicleTestData.xml @@ -0,0 +1,10 @@ +<dataset> +  <VehicleVersion id="1" name="RTW-1" constructionType="HOCHDACH" type="RTW" hasNEF="true"/> +  <VehicleVersion id="2" name="KTW-2" constructionType="MITTELHOCHDACH" type="KTW" hasNEF="false"/> +  <VehicleVersion id="3" name="NEF-3" constructionType="NORMAL" type="NEF" hasNEF="false"/> + + +  <Vehicle id="10" version="1" status="ABGEMELDET"/> +  <Vehicle id="20" version="2" status="FREI_WACHE"/> +  <Vehicle id="30" version="3" status="FREI_FUNK"/> +</dataset>
\ No newline at end of file diff --git a/src/test/resources/vehicleTestUpdateExpectedData.xml b/src/test/resources/vehicleTestUpdateExpectedData.xml new file mode 100644 index 0000000..159ccaa --- /dev/null +++ b/src/test/resources/vehicleTestUpdateExpectedData.xml @@ -0,0 +1,10 @@ +<dataset> +  <VehicleVersion id="1" name="RTW-1" constructionType="HOCHDACH" type="RTW" hasNEF="true"/> +  <VehicleVersion id="2" name="KTW-2" constructionType="MITTELHOCHDACH" type="KTW" hasNEF="false"/> +  <VehicleVersion id="3" name="NEF-3" constructionType="NORMAL" type="NEF" hasNEF="false"/> +  <VehicleVersion id="4" name="RTW-4" constructionType="HOCHDACH" type="RTW" hasNEF="true"/> + +  <Vehicle id="10" version="1" status="ABGEMELDET"/> +  <Vehicle id="20" version="4" status="ABGEMELDET"/> +  <Vehicle id="30" version="3" status="FREI_FUNK"/> +</dataset>
\ No newline at end of file  | 
