aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle')
-rw-r--r--src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CarAddTestService.java283
-rw-r--r--src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleApplication.java51
-rw-r--r--src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java79
-rw-r--r--src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java19
4 files changed, 432 insertions, 0 deletions
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/vehicle/CarAddTestService.java
new file mode 100644
index 0000000..de7a26a
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CarAddTestService.java
@@ -0,0 +1,283 @@
+package at.ac.tuwien.sepm.assignment.groupphase.vehicle;
+
+import static junit.framework.TestCase.fail;
+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.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;
+import org.junit.Test;
+
+public class CarAddTestService {
+ private final VehicleDAO vehicleP = mock(VehicleDatabaseDao.class);
+ private final VehicleService vehicleService = new VehicleServiceImpl(vehicleP);
+
+ public CarAddTestService() throws PersistenceException {
+ when(vehicleP.add(any())).thenReturn(1L);
+ }
+
+ @Test
+ public void testValidVehicleH() {
+ Vehicle vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.HOCHDACH)
+ .type(Vehicle.VehicleType.RTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.HOCHDACH)
+ .type(Vehicle.VehicleType.KTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.HOCHDACH)
+ .type(Vehicle.VehicleType.KTW_B)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.HOCHDACH)
+ .type(Vehicle.VehicleType.BKTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ }
+
+ @Test
+ public void testValidVehicleM() {
+ Vehicle vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH)
+ .type(Vehicle.VehicleType.KTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH)
+ .type(Vehicle.VehicleType.KTW_B)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH)
+ .type(Vehicle.VehicleType.BKTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ }
+
+ @Test
+ public void testValidVehicleN() {
+ Vehicle vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.NORMAL)
+ .type(Vehicle.VehicleType.BKTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.NORMAL)
+ .type(Vehicle.VehicleType.NEF)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.NORMAL)
+ .type(Vehicle.VehicleType.NAH)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (InvalidVehicleException | ServiceException e) {
+ fail();
+ }
+ }
+
+ @Test(expected = InvalidVehicleException.class)
+ public void testInvalidVehicleH() throws InvalidVehicleException {
+ Vehicle vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.HOCHDACH)
+ .type(Vehicle.VehicleType.NEF)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.HOCHDACH)
+ .type(Vehicle.VehicleType.NAH)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ }
+
+ @Test(expected = InvalidVehicleException.class)
+ public void testInvalidVehicleM() throws InvalidVehicleException {
+ Vehicle vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH)
+ .type(Vehicle.VehicleType.NEF)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH)
+ .type(Vehicle.VehicleType.NAH)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH)
+ .type(Vehicle.VehicleType.RTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ }
+
+ @Test(expected = InvalidVehicleException.class)
+ public void testInvalidVehicleN() throws InvalidVehicleException {
+ Vehicle vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.NORMAL)
+ .type(Vehicle.VehicleType.RTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.NORMAL)
+ .type(Vehicle.VehicleType.KTW_B)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ vehicle =
+ Vehicle.builder()
+ .constructionType(Vehicle.ConstructionType.NORMAL)
+ .type(Vehicle.VehicleType.KTW)
+ .hasNef(true)
+ .status(Vehicle.Status.ABGEMELDET)
+ .name("")
+ .build();
+ try {
+ vehicleService.add(vehicle);
+ } catch (ServiceException e) {
+ fail();
+ }
+ }
+}
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..866ed74
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java
@@ -0,0 +1,79 @@
+package at.ac.tuwien.sepm.assignment.groupphase.vehicle;
+
+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.util.Helper;
+import at.ac.tuwien.sepm.assignment.groupphase.util.HighDpiAwareApplicationTest;
+import javafx.scene.control.DialogPane;
+import javafx.scene.input.MouseButton;
+import javafx.stage.Stage;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.testfx.api.FxToolkit;
+import org.testfx.robot.Motion;
+
+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();
+ }
+
+ @Test
+ public void testClickAddValidVehicle() throws ServiceException, InvalidVehicleException {
+
+ when(vehicleService.add(any())).thenReturn(1L);
+
+ clickOn("#btn_create", Motion.DIRECT, MouseButton.PRIMARY);
+
+ Stage alertDialog = Helper.getTopModalStage(robotContext());
+ Assert.assertNotNull(alertDialog);
+
+ DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot();
+ Assert.assertEquals("Speichern Erfolgreich", dialogPane.getHeaderText());
+ }
+
+ @Test
+ public void testClickInvalidVehicleEx() throws ServiceException, InvalidVehicleException {
+
+ when(vehicleService.add(any())).thenThrow(InvalidVehicleException.class);
+
+ clickOn("#btn_create", 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());
+ }
+
+ @Test
+ public void testClickInvalidServiceEx() throws ServiceException, InvalidVehicleException {
+
+ when(vehicleService.add(any())).thenThrow(ServiceException.class);
+
+ clickOn("#btn_create", Motion.DIRECT, MouseButton.PRIMARY);
+
+ Stage alertDialog = Helper.getTopModalStage(robotContext());
+ Assert.assertNotNull(alertDialog);
+
+ DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot();
+ Assert.assertEquals("Fehler", dialogPane.getHeaderText());
+ }
+}
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..ccd1e5d
--- /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.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;
+
+@Configuration
+public class VehicleServiceTestConfiguration {
+
+ @Bean
+ @Primary
+ public VehicleService vehicleService() {
+ return mock(VehicleServiceImpl.class);
+ }
+}