diff options
Diffstat (limited to 'src/test/java/at/ac/tuwien/sepm/assignment/groupphase')
20 files changed, 432 insertions, 344 deletions
diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeApplication.java deleted file mode 100644 index e1b3714..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeApplication.java +++ /dev/null @@ -1,53 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; - -import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader; -import java.lang.invoke.MethodHandles; -import javafx.application.Application; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.stage.Stage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.stereotype.Component; - -@Component -@ComponentScan("at.ac.tuwien.sepm.assignment.groupphase") -public final class CreateNewEmployeeApplication extends Application { - -    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - -    public static AnnotationConfigApplicationContext context; - -    @Override -    public void start(Stage primaryStage) throws Exception { -        // setup application -        primaryStage.setTitle("Person anlegen"); -        primaryStage.setWidth(1366); -        primaryStage.setHeight(768); -        primaryStage.centerOnScreen(); -        primaryStage.setOnCloseRequest(event -> LOG.debug("Application shutdown initiated")); - -        context = new AnnotationConfigApplicationContext(CreateNewEmployeeApplication.class); -        final var fxmlLoader = context.getBean(SpringFXMLLoader.class); -        primaryStage.setScene( -                new Scene( -                        (Parent) -                                fxmlLoader.load( -                                        getClass() -                                                .getResourceAsStream( -                                                        "/fxml/createNewEmployee.fxml")))); - -        // show application -        primaryStage.show(); -        primaryStage.toFront(); -        LOG.debug("Application startup complete"); -    } - -    @Override -    public void stop() { -        LOG.debug("Stopping application"); -        context.close(); -    } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleApplication.java deleted file mode 100644 index ff46938..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleApplication.java +++ /dev/null @@ -1,51 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; - -import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader; -import java.lang.invoke.MethodHandles; -import javafx.application.Application; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.stage.Stage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.stereotype.Component; - -@Component -@ComponentScan("at.ac.tuwien.sepm.assignment.groupphase") -public class CreateNewVehicleApplication extends Application { - -    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - -    public static AnnotationConfigApplicationContext context; - -    @Override -    public void start(Stage primaryStage) throws Exception { -        // setup application -        primaryStage.setTitle("Fahrzeug anlegen"); -        primaryStage.setWidth(1366); -        primaryStage.setHeight(768); -        primaryStage.centerOnScreen(); -        primaryStage.setOnCloseRequest(event -> LOG.debug("Application shutdown initiated")); - -        context = new AnnotationConfigApplicationContext(CreateNewVehicleApplication.class); -        final var fxmlLoader = context.getBean(SpringFXMLLoader.class); -        primaryStage.setScene( -                new Scene( -                        (Parent) -                                fxmlLoader.load( -                                        getClass().getResourceAsStream("/fxml/createCar.fxml")))); - -        // show application -        primaryStage.show(); -        primaryStage.toFront(); -        LOG.debug("Application startup complete"); -    } - -    @Override -    public void stop() { -        LOG.debug("Stopping application"); -        context.close(); -    } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowApplication.java deleted file mode 100644 index 3293ae9..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowApplication.java +++ /dev/null @@ -1,53 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; - -import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader; -import java.lang.invoke.MethodHandles; -import javafx.application.Application; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.stage.Stage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.stereotype.Component; - -@Component -@ComponentScan("at.ac.tuwien.sepm.assignment.groupphase") -public class RegistrationWindowApplication extends Application { - -    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - -    public static AnnotationConfigApplicationContext context; - -    @Override -    public void start(Stage primaryStage) throws Exception { -        // setup application -        primaryStage.setTitle("Person anlegen"); -        // primaryStage.setWidth(1366); -        // primaryStage.setHeight(768); -        primaryStage.centerOnScreen(); -        primaryStage.setOnCloseRequest(event -> LOG.debug("Application shutdown initiated")); - -        context = new AnnotationConfigApplicationContext(RegistrationWindowApplication.class); -        final var fxmlLoader = context.getBean(SpringFXMLLoader.class); -        primaryStage.setScene( -                new Scene( -                        (Parent) -                                fxmlLoader.load( -                                        getClass() -                                                .getResourceAsStream( -                                                        "/fxml/RegistrationWindow.fxml")))); - -        // show application -        primaryStage.show(); -        primaryStage.toFront(); -        LOG.debug("Application startup complete"); -    } - -    @Override -    public void stop() { -        LOG.debug("Stopping application"); -        context.close(); -    } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java deleted file mode 100644 index 6bf2275..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java +++ /dev/null @@ -1,17 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; - -import static org.mockito.Mockito.mock; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -@Configuration -public class EmployeeServiceTestConfiguration { - -    @Bean -    @Primary -    public EmployeeService employeeService() { -        return mock(EmployeeServiceImpl.class); -    } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java deleted file mode 100644 index 895973a..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java +++ /dev/null @@ -1,17 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; - -import static org.mockito.Mockito.mock; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -@Configuration -public class VehicleServiceTestConfiguration { - -    @Bean -    @Primary -    public VehicleService vehicleService() { -        return mock(VehicleServiceImpl.class); -    } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateNewEmployeeControllerTest.java index 7f95950..ccd37b4 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeControllerTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateNewEmployeeControllerTest.java @@ -1,11 +1,14 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller; +import static at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller.Helper.ALERT_TITLE_SERVICE_EXCEPTION; +import static at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller.Helper.ALERT_TITLE_SUCCESS; +import static at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller.Helper.ALERT_TITLE_VALIDATION_ERROR;  import static org.mockito.ArgumentMatchers.any;  import static org.mockito.Mockito.when; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.EmployeeService;  import at.ac.tuwien.sepm.assignment.groupphase.util.Helper;  import at.ac.tuwien.sepm.assignment.groupphase.util.HighDpiAwareApplicationTest;  import javafx.scene.control.DialogPane; @@ -24,10 +27,9 @@ public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest      @Before      public void setup() throws Exception { -        // TODO: check if testfx can be run in headless mode on Jenkins          FxToolkit.registerPrimaryStage(); -        FxToolkit.setupApplication(CreateNewEmployeeApplication.class); -        employeeService = CreateNewEmployeeApplication.context.getBean(EmployeeService.class); +        FxToolkit.setupApplication(GuiTestApplication.class, "createNewEmployee.fxml"); +        employeeService = GuiTestApplication.context.getBean(EmployeeService.class);      }      @After @@ -48,7 +50,7 @@ public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest          Assert.assertNotNull(alertDialog);          DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); -        Assert.assertEquals("Erfolgreich angelegt", dialogPane.getHeaderText()); +        Assert.assertEquals(ALERT_TITLE_SUCCESS, dialogPane.getHeaderText());      }      @Test @@ -63,7 +65,7 @@ public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest          Assert.assertNotNull(alertDialog);          DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); -        Assert.assertEquals("Ungültige Eingabe", dialogPane.getHeaderText()); +        Assert.assertEquals(ALERT_TITLE_VALIDATION_ERROR, dialogPane.getHeaderText());      }      @Test @@ -80,6 +82,6 @@ public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest          Assert.assertNotNull(alertDialog);          DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); -        Assert.assertEquals("Speicherfehler", dialogPane.getHeaderText()); +        Assert.assertEquals(ALERT_TITLE_SERVICE_EXCEPTION, dialogPane.getHeaderText());      }  } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateNewVehicleControllerTest.java index 08e3fde..4906d64 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleControllerTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateNewVehicleControllerTest.java @@ -1,11 +1,14 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller; +import static at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller.Helper.ALERT_TITLE_SERVICE_EXCEPTION; +import static at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller.Helper.ALERT_TITLE_SUCCESS; +import static at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller.Helper.ALERT_TITLE_VALIDATION_ERROR;  import static org.mockito.ArgumentMatchers.any;  import static org.mockito.Mockito.when; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.VehicleService;  import at.ac.tuwien.sepm.assignment.groupphase.util.Helper;  import at.ac.tuwien.sepm.assignment.groupphase.util.HighDpiAwareApplicationTest;  import javafx.scene.control.DialogPane; @@ -24,10 +27,9 @@ public class CreateNewVehicleControllerTest extends HighDpiAwareApplicationTest      @Before      public void setup() throws Exception { -        // TODO: check if testfx can be run in headless mode on Jenkins          FxToolkit.registerPrimaryStage(); -        FxToolkit.setupApplication(CreateNewVehicleApplication.class); -        vehicleService = CreateNewVehicleApplication.context.getBean(VehicleService.class); +        FxToolkit.setupApplication(GuiTestApplication.class, "createCar.fxml"); +        vehicleService = GuiTestApplication.context.getBean(VehicleService.class);      }      @After @@ -40,13 +42,13 @@ public class CreateNewVehicleControllerTest extends HighDpiAwareApplicationTest          when(vehicleService.add(any())).thenReturn(1L); -        clickOn("#btn_create", Motion.DIRECT, MouseButton.PRIMARY); +        clickOn("#btnCreate", Motion.DIRECT, MouseButton.PRIMARY);          Stage alertDialog = Helper.getTopModalStage(robotContext());          Assert.assertNotNull(alertDialog);          DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); -        Assert.assertEquals("Speichern Erfolgreich", dialogPane.getHeaderText()); +        Assert.assertEquals(ALERT_TITLE_SUCCESS, dialogPane.getHeaderText());      }      @Test @@ -54,13 +56,13 @@ public class CreateNewVehicleControllerTest extends HighDpiAwareApplicationTest          when(vehicleService.add(any())).thenThrow(InvalidVehicleException.class); -        clickOn("#btn_create", Motion.DIRECT, MouseButton.PRIMARY); +        clickOn("#btnCreate", Motion.DIRECT, MouseButton.PRIMARY);          Stage alertDialog = Helper.getTopModalStage(robotContext());          Assert.assertNotNull(alertDialog);          DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); -        Assert.assertEquals("Ungültige Eingabe", dialogPane.getHeaderText()); +        Assert.assertEquals(ALERT_TITLE_VALIDATION_ERROR, dialogPane.getHeaderText());      }      @Test @@ -68,12 +70,12 @@ public class CreateNewVehicleControllerTest extends HighDpiAwareApplicationTest          when(vehicleService.add(any())).thenThrow(ServiceException.class); -        clickOn("#btn_create", Motion.DIRECT, MouseButton.PRIMARY); +        clickOn("#btnCreate", Motion.DIRECT, MouseButton.PRIMARY);          Stage alertDialog = Helper.getTopModalStage(robotContext());          Assert.assertNotNull(alertDialog);          DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); -        Assert.assertEquals("Fehler", dialogPane.getHeaderText()); +        Assert.assertEquals(ALERT_TITLE_SERVICE_EXCEPTION, dialogPane.getHeaderText());      }  } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/GuiTestApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/GuiTestApplication.java new file mode 100644 index 0000000..968141e --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/GuiTestApplication.java @@ -0,0 +1,101 @@ +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller; + +import static org.mockito.Mockito.mock; + +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.EmployeeService; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.EmployeeServiceImpl; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.OperationService; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.OperationServiceImpl; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.RegistrationService; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.RegistrationServiceImpl; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.VehicleService; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.VehicleServiceImpl; +import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader; +import java.lang.invoke.MethodHandles; +import javafx.application.Application; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +@Component +@ComponentScan("at.ac.tuwien.sepm.assignment.groupphase") +public class GuiTestApplication extends Application { + +    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + +    public static AnnotationConfigApplicationContext context; + +    @Configuration +    public static class ContextConfiguration { + +        @Bean +        @Primary +        public EmployeeService employeeService() { +            return mock(EmployeeServiceImpl.class); +        } + +        @Bean +        @Primary +        public VehicleService vehicleService() { +            return mock(VehicleServiceImpl.class); +        } + +        @Bean +        @Primary +        public OperationService operationService() { +            return mock(OperationServiceImpl.class); +        } + +        @Bean +        @Primary +        public RegistrationService registrationService() { +            return mock(RegistrationServiceImpl.class); +        } +    } + +    @Override +    public void start(Stage primaryStage) throws Exception { +        // setup application +        primaryStage.setTitle("Test window"); +        primaryStage.setWidth(1366); +        primaryStage.setHeight(768); +        primaryStage.centerOnScreen(); +        primaryStage.setOnCloseRequest(event -> LOG.debug("Application shutdown initiated")); + +        if (getParameters().getRaw().size() < 1) { +            throw new UnsupportedOperationException("FXML file not set"); +        } + +        context = new AnnotationConfigApplicationContext(GuiTestApplication.class); +        final var fxmlLoader = context.getBean(SpringFXMLLoader.class); +        primaryStage.setScene( +                new Scene( +                        (Parent) +                                fxmlLoader.load( +                                        getClass() +                                                .getResourceAsStream( +                                                        "/fxml/" +                                                                + getParameters() +                                                                        .getRaw() +                                                                        .get(0))))); + +        // show application +        primaryStage.show(); +        primaryStage.toFront(); +        LOG.debug("Application startup complete"); +    } + +    @Override +    public void stop() { +        LOG.debug("Stopping application"); +        context.close(); +    } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/RegistrationControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/RegistrationControllerTest.java new file mode 100644 index 0000000..97fb0e7 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/RegistrationControllerTest.java @@ -0,0 +1,22 @@ +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller; + +import at.ac.tuwien.sepm.assignment.groupphase.util.HighDpiAwareApplicationTest; +import org.junit.After; +import org.junit.Before; +import org.testfx.api.FxToolkit; + +public class RegistrationControllerTest extends HighDpiAwareApplicationTest { + +    @Before +    public void setup() throws Exception { +        FxToolkit.registerPrimaryStage(); +        FxToolkit.setupApplication(GuiTestApplication.class, "RegistrationWindow.fxml"); +    } + +    @After +    public void cleanup() throws Exception { +        FxToolkit.cleanupStages(); +    } + +    // TODO: implement GUI Tests +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java index 585e5ea..008ac57 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDAOTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/EmployeeDAOTest.java @@ -1,9 +1,9 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.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.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; @@ -23,7 +23,7 @@ public class EmployeeDAOTest extends JdbcTestCase {      private EmployeeDAO employeePersistence; -    public EmployeeDAOTest() throws PersistenceException { +    public EmployeeDAOTest() {          employeePersistence = new EmployeeDatabaseDAO(getJdbcConnectionManager());      } @@ -40,7 +40,6 @@ public class EmployeeDAOTest extends JdbcTestCase {      public void testListEmployees() throws PersistenceException {          Set<Employee> employees = employeePersistence.list(); -        System.out.println(LocalDate.parse("2010-10-10"));          Employee empOne =                  Employee.builder()                          .id(1) 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/missioncontrol/dao/OperationDAOTest.java index f173376..d9e7fb7 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDAOTest.java @@ -1,21 +1,26 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao; + +import static org.junit.Assert.assertEquals; -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.ElementNotFoundException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.VehicleType;  import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase;  import java.time.Instant;  import java.util.Arrays;  import java.util.Collections;  import java.util.EnumSet; +import java.util.LinkedList;  import java.util.Set; +import java.util.TimeZone;  import org.dbunit.dataset.DataSetException;  import org.dbunit.dataset.IDataSet; +import org.junit.BeforeClass;  import org.junit.Test;  public class OperationDAOTest extends JdbcTestCase { @@ -27,6 +32,8 @@ public class OperationDAOTest extends JdbcTestCase {      private final Operation o; +    private final Operation originalOperation; +      public OperationDAOTest() throws PersistenceException {          // TODO: fix once everything properly uses dependency injection          EmployeeDAO employeeDAO = new EmployeeDatabaseDAO(getJdbcConnectionManager()); @@ -34,7 +41,9 @@ public class OperationDAOTest extends JdbcTestCase {                  new RegistrationDatabaseDAO(getJdbcConnectionManager(), employeeDAO);          VehicleDAO vehicleDAO =                  new VehicleDatabaseDAO(getJdbcConnectionManager(), registrationDatabaseDAO); -        this.operationDAO = new OperationDatabaseDAO(getJdbcConnectionManager(), vehicleDAO); +        this.operationDAO = +                new OperationDatabaseDAO( +                        getJdbcConnectionManager(), vehicleDAO, registrationDatabaseDAO);          Vehicle v1 =                  Vehicle.builder() @@ -56,12 +65,40 @@ public class OperationDAOTest extends JdbcTestCase {                          .severity(Severity.B)                          .status(Status.ACTIVE)                          .vehicles(Set.of(v1, v2, v3)) -                        .created(Instant.now()) -                        .destination("New description") -                        .additionalInfo("Test") +                        .created(Instant.ofEpochSecond(1514764800)) // 2018-01-01 00:00:00.0 +                        .destination("New destination") +                        .additionalInfo("New information") +                        .build(); + +        Vehicle vehicle = +                Vehicle.builder() +                        .id(4) +                        .name("BKTW-4") +                        .constructionType(ConstructionType.HOCHDACH) +                        .type(VehicleType.BKTW) +                        .hasNef(false) +                        .status(Vehicle.Status.ZUM_BERUFUNGSORT) +                        .registrations(new LinkedList<>()) +                        .build(); + +        originalOperation = +                Operation.builder() +                        .id(1) +                        .opCode("ALP-95E7") +                        .severity(Severity.E) +                        .created(Instant.parse("2000-01-01T00:00:00.0Z")) +                        .destination("Wiedner Hauptstraße 35, Wien") +                        .additionalInfo("Additional information") +                        .status(Status.ACTIVE) +                        .vehicles(Set.of(vehicle))                          .build();      } +    @BeforeClass +    public static void before() { +        TimeZone.setDefault(TimeZone.getTimeZone("UTC")); +    } +      @Override      protected IDataSet getDataSet() throws DataSetException {          return getDataSet("operationDAOUpdateSetup.xml"); @@ -94,16 +131,21 @@ public class OperationDAOTest extends JdbcTestCase {      public void testListOperations() throws Exception {          Set<Operation> operationSet = operationDAO.list(EnumSet.allOf(Status.class)); -        // TODO: operations.list() currently doesn't set the vehicles set -        // assertEquals(Set.of(o), operationSet); +        assertEquals(Set.of(originalOperation), operationSet);      }      @Test -    public void testAddOperation() throws Exception { -        operationDAO.add(o); +    public void testGetOperations() throws Exception { +        Operation gotOperation = operationDAO.get(originalOperation.id()); + +        assertEquals(originalOperation, gotOperation); +    } -        // TODO: won't work because id won't match -        // compareWith("operationDAOUpdateNormal.xml", COMPARE_TABLES); +    @Test +    public void testAddOperation() throws Exception { +        long id = operationDAO.add(o); +        assertEquals(2, id); +        compareWith("operationDAOAddOperation.xml", COMPARE_TABLES);      }      @Test(expected = PersistenceException.class) diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/RegistrationDAOTest.java index e8ea809..2cb54f8 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDAOTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/RegistrationDAOTest.java @@ -1,82 +1,35 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao;  import static org.junit.Assert.*; -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.exception.PersistenceException; -import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; -import java.nio.charset.Charset; -import java.sql.SQLException; +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.missioncontrol.dto.Registration; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase;  import java.time.Instant;  import java.time.LocalDate;  import java.util.HashSet;  import java.util.Set; -import org.h2.tools.RunScript; -import org.junit.AfterClass; -import org.junit.BeforeClass; +import org.dbunit.dataset.IDataSet;  import org.junit.Rule;  import org.junit.Test;  import org.junit.rules.ExpectedException; -public class RegistrationDAOTest { - -    // Base taken from EmployeeDAOTest - -    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 = ""; +public class RegistrationDAOTest extends JdbcTestCase {      private RegistrationDAO registrationDAO;      public RegistrationDAOTest() throws PersistenceException { -        JDBCConnectionManager jdbcConnectionManager = new JDBCConnectionManager(JDBC_URL);          this.registrationDAO =                  new RegistrationDatabaseDAO( -                        jdbcConnectionManager, new EmployeeDatabaseDAO(jdbcConnectionManager)); -        // TODO: Use Spring Dependency Injection here! +                        getJdbcConnectionManager(), +                        new EmployeeDatabaseDAO(getJdbcConnectionManager()));      } -    @BeforeClass -    public static void setupDatabase() throws SQLException { -        RunScript.execute( -                JDBC_URL, -                USER, -                PASSWORD, -                "classpath:sql/database.sql", -                Charset.forName("UTF8"), -                false); -        RunScript.execute( -                JDBC_URL, -                USER, -                PASSWORD, -                "classpath:sql/H2RegistrationDAOTest_populate.sql", -                Charset.forName("UTF8"), -                false); -    } -    /* -        @Before -        public void setUp() throws SQLException { -            RunScript.execute( -                    JDBC_URL, -                    USER, -                    PASSWORD, -                    "classpath:sql/H2RegistrationDAOTest_populate.sql", -                    Charset.forName("UTF8"), -                    false); -        } -    */ -    @AfterClass -    public static void tearDown() throws SQLException { -        RunScript.execute( -                JDBC_URL, -                USER, -                PASSWORD, -                "classpath:sql/H2RegistrationDAOTest_depopulate.sql", -                Charset.forName("UTF8"), -                false); +    @Override +    protected IDataSet getDataSet() throws Exception { +        return getDataSet("registrationTestBaseData.xml");      }      @Rule public ExpectedException thrown = ExpectedException.none(); @@ -84,16 +37,6 @@ public class RegistrationDAOTest {      @Test      public void addRegistrationsShouldSucceed() throws PersistenceException {          Set<Registration> registrations = new HashSet<>(); -        /* -        Vehicle vehicle = Vehicle.builder() -                .id(1) -                .name("RTW-1") -                .constructionType(ConstructionType.HOCHDACH) -                .type(VehicleType.RTW) -                .status(Status.ABGEMELDET) -                .hasNef(true) -                .build(); -        */          Employee employee1 =                  Employee.builder()                          .id(1) @@ -162,8 +105,8 @@ public class RegistrationDAOTest {                          .build();          Registration registration =                  Registration.builder() -                        .start(Instant.MIN) -                        .end(Instant.MAX) +                        .start(Instant.now()) +                        .end(Instant.now())                          .employee(employee)                          .build();          registrations.add(registration); diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/VehicleDAOTest.java index 1862214..c4d7d86 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDAOTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/VehicleDAOTest.java @@ -1,11 +1,11 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao; -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.missioncontrol.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.Status; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.VehicleType;  import at.ac.tuwien.sepm.assignment.groupphase.util.Helper;  import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase;  import java.io.InputStream; 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/missioncontrol/service/EmployeeServiceTest.java index 90f0a44..17c0a47 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/EmployeeServiceTest.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service;  import static org.hamcrest.CoreMatchers.is;  import static org.mockito.ArgumentMatchers.any; @@ -6,14 +6,14 @@ 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 at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Employee.EducationLevel;  import java.time.LocalDate;  import org.junit.Assert;  import org.junit.Test; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/OperationServiceIntegrationTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/OperationServiceIntegrationTest.java new file mode 100644 index 0000000..008787f --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/OperationServiceIntegrationTest.java @@ -0,0 +1,99 @@ +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service; + +import static org.junit.Assert.assertEquals; + +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.OperationDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.util.Helper; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; +import java.util.Set; +import org.dbunit.Assertion; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; +import org.junit.Test; + +public class OperationServiceIntegrationTest extends JdbcTestCase { + +    private OperationService operationService; + +    private Operation o; + +    public OperationServiceIntegrationTest() { +        EmployeeDAO employeeDAO = new EmployeeDatabaseDAO(getJdbcConnectionManager()); +        RegistrationDAO registrationDAO = +                new RegistrationDatabaseDAO(getJdbcConnectionManager(), employeeDAO); +        VehicleDAO vehicleDAO = +                new VehicleDatabaseDAO( +                        getJdbcConnectionManager(), (RegistrationDatabaseDAO) registrationDAO); +        OperationDAO operationDAO = +                new OperationDatabaseDAO( +                        getJdbcConnectionManager(), +                        vehicleDAO, +                        (RegistrationDatabaseDAO) registrationDAO); + +        VehicleService vehicleService = new VehicleServiceImpl(vehicleDAO); + +        operationService = new OperationServiceImpl(operationDAO, vehicleDAO, vehicleService); + +        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() +                        .opCode("RD-2B0M") +                        .status(Status.ACTIVE) +                        .vehicles(Set.of(v1, v2, v3)) +                        .destination("New destination") +                        .additionalInfo("New information") +                        .build(); +    } + +    @Override +    protected IDataSet getDataSet() throws Exception { +        return getDataSet("operationDAOUpdateSetup.xml"); +    } + +    @Test +    public void addValidOperation() throws Exception { + +        long id = operationService.add(o); +        assertEquals(2, id); + +        String tableName = "Operation"; +        String[] excludedColumns = new String[] {"created"}; + +        ITable actual = +                Helper.getActualFilteredTableData(getConnection(), tableName, excludedColumns); +        ITable expected = +                Helper.getExpectedFilteredTableData( +                        tableName, excludedColumns, "operationDAOAddOperation.xml"); + +        Assertion.assertEquals(expected, actual); +    } + +    @Test(expected = InvalidOperationException.class) +    public void addInvalidOperation() throws InvalidOperationException, ServiceException { +        operationService.add(o.toBuilder().opCode("").build()); +    } +} 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/missioncontrol/service/OperationServiceTest.java index 67fb77d..4c1eaf1 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/OperationServiceTest.java @@ -1,4 +1,4 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service;  import static org.mockito.ArgumentMatchers.any;  import static org.mockito.ArgumentMatchers.anyLong; @@ -6,16 +6,16 @@ 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.einsatzverwaltung.dto.Vehicle.ConstructionType;  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.missioncontrol.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.ConstructionType;  import java.time.Instant;  import java.util.Collections;  import java.util.Set; diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/RegistrationServiceIntegrationTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/RegistrationServiceIntegrationTest.java new file mode 100644 index 0000000..ac5c3fb --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/RegistrationServiceIntegrationTest.java @@ -0,0 +1,55 @@ +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service; + +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 at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDatabaseDAO; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; +import org.dbunit.dataset.IDataSet; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +public class RegistrationServiceIntegrationTest extends JdbcTestCase { + +    private RegistrationDAO registrationDAO; +    private VehicleDAO vehicleDAO; + +    @Rule public ExpectedException thrown = ExpectedException.none(); + +    @Override +    protected IDataSet getDataSet() throws Exception { +        return getDataSet("registrationTestBaseData.xml"); +    } + +    @Before +    public void prepare() throws PersistenceException { + +        EmployeeDAO employeeDAO = new EmployeeDatabaseDAO(getJdbcConnectionManager()); +        registrationDAO = new RegistrationDatabaseDAO(getJdbcConnectionManager(), employeeDAO); +        vehicleDAO = +                new VehicleDatabaseDAO( +                        getJdbcConnectionManager(), (RegistrationDatabaseDAO) registrationDAO); +    } + +    @Test +    public void addValidRegistrationsShouldSucceed() +            throws InvalidRegistrationException, ServiceException, InvalidVehicleException { +        RegistrationServiceTest.addValidRegistrations(registrationDAO, vehicleDAO); +    } + +    @Test +    public void addOnlyOnePersonToRTWShouldFail() +            throws InvalidRegistrationException, ServiceException, InvalidVehicleException { +        RegistrationServiceTest.addOnlyOnePersonToRTW(thrown, registrationDAO, vehicleDAO); +    } + +    // TODO: also test real integration, e.g. add registration and delete afterwards (feedback) +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/RegistrationServiceTest.java index 4d3a251..b4bcff4 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/service/RegistrationServiceTest.java @@ -1,23 +1,23 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; +package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service;  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 at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDAO; +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.missioncontrol.dto.Registration; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.Builder; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.Status; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.VehicleType;  import java.time.Instant;  import java.time.LocalDate;  import java.time.temporal.ChronoUnit; @@ -58,6 +58,17 @@ public class RegistrationServiceTest {      @Test      public void addValidRegistrationsShouldSucceed()              throws InvalidRegistrationException, ServiceException, InvalidVehicleException { +        addValidRegistrations(registrationDAO, vehicleDAO); +    } + +    @Test +    public void addOnlyOnePersonToRTWShouldFail() +            throws InvalidRegistrationException, ServiceException, InvalidVehicleException { +        addOnlyOnePersonToRTW(thrown, registrationDAO, vehicleDAO); +    } + +    static void addValidRegistrations(RegistrationDAO registrationDAO, VehicleDAO vehicleDAO) +            throws InvalidVehicleException, InvalidRegistrationException, ServiceException {          RegistrationService registrationService =                  new RegistrationServiceImpl(registrationDAO, vehicleDAO);          Set<Registration> registrations = new HashSet<>(); @@ -111,9 +122,9 @@ public class RegistrationServiceTest {          registrationService.add(vehicle.id(), registrations);      } -    @Test -    public void addOnlyOnePersonToRTWShouldFail() -            throws InvalidRegistrationException, ServiceException, InvalidVehicleException { +    static void addOnlyOnePersonToRTW( +            ExpectedException thrown, RegistrationDAO registrationDAO, VehicleDAO vehicleDAO) +            throws InvalidVehicleException, InvalidRegistrationException, ServiceException {          thrown.expect(InvalidRegistrationException.class);          RegistrationService registrationService =                  new RegistrationServiceImpl(registrationDAO, vehicleDAO); diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java index c9816a1..2924b3f 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java @@ -7,7 +7,7 @@ import org.testfx.framework.junit.ApplicationTest;  import org.testfx.service.locator.impl.BoundsLocatorImpl;  import org.testfx.service.locator.impl.PointLocatorImpl; -public class HighDpiAwareApplicationTest extends ApplicationTest { +public abstract class HighDpiAwareApplicationTest extends ApplicationTest {      public HighDpiAwareApplicationTest() {          FxRobotContext context = robotContext(); 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 index c509a1f..e419ab0 100644 --- 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 @@ -19,7 +19,7 @@ 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.ext.h2.H2DataTypeFactory;  import org.dbunit.operation.DatabaseOperation;  import org.junit.After;  import org.junit.Before; @@ -96,13 +96,14 @@ public abstract class JdbcTestCase {      // 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; +        H2DataTypeFactory factory = +                new H2DataTypeFactory() { +                    boolean isEnumType(String sqlTypeName) { +                        return sqlTypeName.equalsIgnoreCase("enum"); +                    } -                        return super.isEnumType(sqlTypeName); +                    boolean isTimestampWithTimeZoneType(String sqlTypeName) { +                        return sqlTypeName.equalsIgnoreCase("timestamp with time zone");                      }                      @Override @@ -110,6 +111,8 @@ public abstract class JdbcTestCase {                              throws DataTypeException {                          if (isEnumType(sqlTypeName)) {                              sqlType = Types.VARCHAR; +                        } else if (isTimestampWithTimeZoneType(sqlTypeName)) { +                            sqlType = Types.VARCHAR;                          }                          return super.createDataType(sqlType, sqlTypeName); @@ -130,7 +133,7 @@ public abstract class JdbcTestCase {          IDataSet expected = new FlatXmlDataSetBuilder().build(res);          for (String table : tables) { -            assertEquals(actual.getTable(table), expected.getTable(table)); +            assertEquals(expected.getTable(table), actual.getTable(table));          }      }  | 
