From c8cdc403f8e3276a9c4b2d82246150924b23bc81 Mon Sep 17 00:00:00 2001
From: Martin Weick <e1627760@student.tuwien.ac.at>
Date: Fri, 4 May 2018 21:06:54 +0200
Subject: Prepare UI tests for CreateNewVehicle

---
 .../vehicle/CreateNewVehicleApplication.java       | 51 ++++++++++++++++++++++
 .../vehicle/CreateNewVehicleControllerTest.java    | 25 +++++++++++
 .../vehicle/VehicleServiceTestConfiguration.java   | 19 ++++++++
 3 files changed, 95 insertions(+)
 create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleApplication.java
 create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java
 create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java

(limited to 'src/test/java/at')

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/vehicle/CreateNewVehicleApplication.java
new file mode 100644
index 0000000..dcd88ec
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleApplication.java
@@ -0,0 +1,51 @@
+package at.ac.tuwien.sepm.assignment.groupphase.vehicle;
+
+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/vehicle/CreateNewVehicleControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java
new file mode 100644
index 0000000..8f35d3b
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java
@@ -0,0 +1,25 @@
+package at.ac.tuwien.sepm.assignment.groupphase.vehicle;
+
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;
+import at.ac.tuwien.sepm.assignment.groupphase.util.HighDpiAwareApplicationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.testfx.api.FxToolkit;
+
+public class CreateNewVehicleControllerTest extends HighDpiAwareApplicationTest {
+
+    private VehicleService vehicleService;
+
+    @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);
+    }
+
+    @After
+    public void cleanup() throws Exception {
+        FxToolkit.cleanupStages();
+    }
+}
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/vehicle/VehicleServiceTestConfiguration.java
new file mode 100644
index 0000000..cccd5dc
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java
@@ -0,0 +1,19 @@
+package at.ac.tuwien.sepm.assignment.groupphase.vehicle;
+
+import static org.mockito.Mockito.mock;
+
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleAdd;
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;
+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(VehicleAdd.class);
+    }
+}
-- 
cgit v1.2.3-70-g09d2