diff options
Diffstat (limited to 'src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle')
5 files changed, 153 insertions, 432 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 deleted file mode 100644 index de7a26a..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CarAddTestService.java +++ /dev/null @@ -1,283 +0,0 @@ -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 deleted file mode 100644 index dcd88ec..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleApplication.java +++ /dev/null @@ -1,51 +0,0 @@ -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 deleted file mode 100644 index 866ed74..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java +++ /dev/null @@ -1,79 +0,0 @@ -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/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/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java deleted file mode 100644 index ccd1e5d..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java +++ /dev/null @@ -1,19 +0,0 @@ -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); -    } -}  | 
