From d01fe53ec94935379215e025c985bd27109af9ec Mon Sep 17 00:00:00 2001 From: Tharre Date: Fri, 11 May 2018 22:54:45 +0200 Subject: Implement VehicleDAO.get() and fix list() misuse --- .../service/RegistrationServiceImplTest.java | 36 +++++++++++----------- 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java index f3efbef..88642ee 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java @@ -1,23 +1,26 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; -import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.when; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.RegistrationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Builder; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidRegistrationException; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.time.Instant; import java.time.LocalDate; import java.time.temporal.ChronoUnit; -import java.util.Arrays; import java.util.LinkedList; import java.util.List; import org.junit.Before; @@ -31,35 +34,32 @@ import org.mockito.junit.MockitoRule; public class RegistrationServiceImplTest { - @Mock RegistrationDAO daoMock; + @Mock private RegistrationDAO registrationDAO; - @Mock VehicleService vehicleService; + @Mock private VehicleDAO vehicleDAO; @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); @Rule public ExpectedException thrown = ExpectedException.none(); @Before - public void setUp() throws ServiceException { + public void setUp() throws ElementNotFoundException, PersistenceException { MockitoAnnotations.initMocks(this); - when(vehicleService.list(any())) - .thenReturn( - Arrays.asList( - Vehicle.builder() - .id(1) - .name("RTW-1") - .constructionType(ConstructionType.HOCHDACH) - .status(Status.ABGEMELDET) - .type(VehicleType.RTW) - .hasNef(true) - .build())); + Builder b = + Vehicle.builder() + .name("RTW-1") + .constructionType(ConstructionType.HOCHDACH) + .status(Status.ABGEMELDET) + .type(VehicleType.RTW) + .hasNef(true); + when(vehicleDAO.get(anyLong())).thenAnswer(ans -> b.id(ans.getArgument(0)).build()); } @Test public void addValidRegistrationsShouldSucceed() throws InvalidRegistrationException, ServiceException, InvalidVehicleException { RegistrationService registrationService = - new RegistrationServiceImpl(daoMock, vehicleService); + new RegistrationServiceImpl(registrationDAO, vehicleDAO); List registrations = new LinkedList<>(); Vehicle vehicle = Vehicle.builder() @@ -116,7 +116,7 @@ public class RegistrationServiceImplTest { throws InvalidRegistrationException, ServiceException, InvalidVehicleException { thrown.expect(InvalidRegistrationException.class); RegistrationService registrationService = - new RegistrationServiceImpl(daoMock, vehicleService); + new RegistrationServiceImpl(registrationDAO, vehicleDAO); List registrations = new LinkedList<>(); Vehicle vehicle = Vehicle.builder() -- cgit v1.2.3-70-g09d2 From 41f094201aaeb573968d2b96b9dc6760e0c5aedc Mon Sep 17 00:00:00 2001 From: Tharre Date: Sat, 12 May 2018 01:58:06 +0200 Subject: Fix DBUnit's enums and revert database changes --- .../einsatzverwaltung/dao/VehicleDatabaseDao.java | 4 +- src/main/resources/sql/database.sql | 20 +- .../employee/EmployeePersistenceTest.java | 213 +++++++++------------ 3 files changed, 101 insertions(+), 136 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java index 8f0d28b..3e8c0fc 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java @@ -162,9 +162,9 @@ public class VehicleDatabaseDao implements VehicleDAO { return Vehicle.builder() .id(rs.getLong("id")) .name(rs.getString("name")) - .constructionType(ConstructionType.valueOf(rs.getString("constructionType"))) + .constructionType(ConstructionType.values()[rs.getInt("constructionType")]) .type(VehicleType.valueOf(rs.getString("type"))) - .status(Status.valueOf(rs.getString("constructionType"))) + .status(Status.values()[rs.getInt("status")]) .hasNef(rs.getBoolean("hasNef")) .build(); } diff --git a/src/main/resources/sql/database.sql b/src/main/resources/sql/database.sql index 4f3adf7..ddedeac 100644 --- a/src/main/resources/sql/database.sql +++ b/src/main/resources/sql/database.sql @@ -1,30 +1,26 @@ CREATE TABLE IF NOT EXISTS VehicleVersion ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, - constructionType VARCHAR NOT NULL, - type VARCHAR NOT NULL, + constructionType ENUM('NORMAL', 'HOCHDACH', 'MITTELHOCHDACH') NOT NULL, + type ENUM('BKTW', 'KTW_B', 'KTW', 'RTW', 'NEF', 'NAH') NOT NULL, hasNef BOOLEAN NOT NULL, - CHECK constructionType IN ('NORMAL', 'HOCHDACH', 'MITTELHOCHDACH'), - CHECK type IN ('BKTW', 'KTW-B', 'KTW', 'RTW', 'NEF', 'NAH') ); CREATE TABLE IF NOT EXISTS Vehicle ( id BIGINT AUTO_INCREMENT PRIMARY KEY, version BIGINT NOT NULL, - status VARCHAR NOT NULL, + status ENUM('ABGEMELDET', 'FREI_WACHE', 'ZUM_BERUFUNGSORT', 'AM_BERUFUNGSORT', 'ZUM_ZIELORT', + 'AM_ZIELORT', 'FREI_FUNK', 'DELETED') NOT NULL, FOREIGN KEY (version) REFERENCES VehicleVersion(id), - CHECK status IN ('ABGEMELDET', 'FREI_WACHE', 'ZUM_BERUFUNGSORT', 'AM_BERUFUNGSORT', 'ZUM_ZIELORT', - 'AM_ZIELORT', 'FREI_FUNK', 'DELETED') ); CREATE TABLE IF NOT EXISTS EmployeeVersion ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, birthday DATE NOT NULL, - educationLevel VARCHAR NOT NULL, + educationLevel ENUM('RS', 'NFS', 'NKV', 'NKA', 'NKI', 'NA') NOT NULL, isDriver BOOLEAN NOT NULL, isPilot BOOLEAN NOT NULL, - CHECK educationLevel IN ('RS', 'NFS', 'NKV', 'NKA', 'NKI', 'NA') ); CREATE TABLE IF NOT EXISTS Employee ( @@ -47,13 +43,11 @@ CREATE TABLE IF NOT EXISTS Registration ( CREATE TABLE IF NOT EXISTS Operation ( id BIGINT AUTO_INCREMENT PRIMARY KEY, opCode VARCHAR(20) NOT NULL, - severity VARCHAR NOT NULL, + severity ENUM('A', 'B', 'C', 'D', 'E', 'O') NOT NULL, created TIMESTAMP NOT NULL, destination VARCHAR(100) NOT NULL, additionalInfo VARCHAR(100), - status VARCHAR NOT NULL, - CHECK severity IN ('A', 'B', 'C', 'D', 'E', 'O'), - CHECK status IN ('ACTIVE', 'COMPLETED', 'CANCELLED') + status ENUM('ACTIVE', 'COMPLETED', 'CANCELLED'), ); CREATE TABLE IF NOT EXISTS VehicleOperation ( diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java index f8fe0f3..e8d0d4d 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java @@ -1,155 +1,126 @@ package at.ac.tuwien.sepm.assignment.groupphase.employee; -import static junit.framework.TestCase.fail; - import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDatabaseDao; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; -import java.nio.charset.Charset; -import java.sql.SQLException; +import java.io.InputStream; +import java.sql.Types; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.List; -import org.dbunit.IDatabaseTester; -import org.dbunit.JdbcDatabaseTester; +import org.dbunit.DBTestCase; +import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.database.DatabaseConfig; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.datatype.DataType; +import org.dbunit.dataset.datatype.DataTypeException; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.operation.DatabaseOperation; -import org.h2.tools.RunScript; +import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -public class EmployeePersistenceTest { +public class EmployeePersistenceTest extends DBTestCase { private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); - private static final String JDBC_URL = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"; - private static final String USER = ""; - private static final String PASSWORD = ""; + private static final String JDBC_URL = + "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; private EmployeeDAO employeePersistence; public EmployeePersistenceTest() throws PersistenceException { employeePersistence = new EmployeeDatabaseDao(new JDBCConnectionManager(JDBC_URL)); - } - @BeforeClass - public static void createSchema() throws SQLException { - RunScript.execute( - JDBC_URL, - USER, - PASSWORD, - "classpath:sql/database.sql", - Charset.forName("UTF8"), - false); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); } - @Before - public void importDataSet() throws Exception { - IDataSet dataSet = readDataSet(); - cleanlyInsert(dataSet); + @Override + protected IDataSet getDataSet() throws DataSetException { + InputStream res = + getClass().getClassLoader().getResourceAsStream("employeeServiceTestData.xml"); + return new FlatXmlDataSetBuilder().build(res); } - private IDataSet readDataSet() throws DataSetException { - return new FlatXmlDataSetBuilder() - .build( - getClass() - .getClassLoader() - .getResourceAsStream("employeeServiceTestData.xml")); + @Override + protected void setUpDatabaseConfig(DatabaseConfig config) { + PostgresqlDataTypeFactory factory = + new PostgresqlDataTypeFactory() { + @Override + public boolean isEnumType(String sqlTypeName) { + if (sqlTypeName.equalsIgnoreCase("enum")) return true; + + return super.isEnumType(sqlTypeName); + } + + @Override + public DataType createDataType(int sqlType, String sqlTypeName) + throws DataTypeException { + if (isEnumType(sqlTypeName)) { + sqlType = Types.VARCHAR; + } + + return super.createDataType(sqlType, sqlTypeName); + } + }; + + config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); } - private void cleanlyInsert(IDataSet dataSet) throws Exception { - IDatabaseTester databaseTester = - new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); - - databaseTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT); - databaseTester.setDataSet(dataSet); - databaseTester.onSetup(); + public void testListEmployees() throws PersistenceException { + List employees = employeePersistence.list(); + + System.out.println(LocalDate.parse("2010-10-10")); + Employee empOne = + Employee.builder() + .id(1) + .name("Adam") + .birthday(LocalDate.parse("2010-10-10")) + .educationLevel(EducationLevel.RS) + .isDriver(true) + .isPilot(false) + .build(); + + Employee empTwo = + Employee.builder() + .id(2) + .name("Max") + .birthday(LocalDate.parse("1990-11-11")) + .educationLevel(EducationLevel.NFS) + .isDriver(false) + .isPilot(false) + .build(); + + Employee empThree = + Employee.builder() + .id(3) + .name("Lisa") + .birthday(LocalDate.parse("1999-10-16")) + .educationLevel(EducationLevel.NKI) + .isDriver(true) + .isPilot(false) + .build(); + + Assert.assertTrue(employees.contains(empOne)); + Assert.assertTrue(employees.contains(empTwo)); + Assert.assertTrue(employees.contains(empThree)); + Assert.assertEquals(3, employees.size()); } - @Test - public void testListEmployees() { - - try { - List employees = employeePersistence.list(); - - Employee empOne = - Employee.builder() - .id(1) - .name("Adam") - .birthday( - LocalDate.parse( - "10.10.2010", - DateTimeFormatter.ofPattern("dd.MM.yyyy"))) - .educationLevel(EducationLevel.RS) - .isDriver(true) - .isPilot(false) - .build(); - - Employee empTwo = - Employee.builder() - .id(2) - .name("Max") - .birthday( - LocalDate.parse( - "11.11.1990", - DateTimeFormatter.ofPattern("dd.MM.yyyy"))) - .educationLevel(EducationLevel.NFS) - .isDriver(false) - .isPilot(false) - .build(); - - Employee empThree = - Employee.builder() - .id(3) - .name("Lisa") - .birthday( - LocalDate.parse( - "16.10.1999", - DateTimeFormatter.ofPattern("dd.MM.yyyy"))) - .educationLevel(EducationLevel.NKI) - .isDriver(true) - .isPilot(false) - .build(); - - Assert.assertTrue(employees.contains(empOne)); - Assert.assertTrue(employees.contains(empTwo)); - Assert.assertTrue(employees.contains(empThree)); - Assert.assertEquals(3, employees.size()); - - } catch (PersistenceException e) { - fail(); - } - } + public void testEmployeeListNoElement() throws PersistenceException { + List employees = employeePersistence.list(); + + Employee empOne = + Employee.builder() + .id(10) + .name("Adam") + .birthday(LocalDate.parse("2010-10-10")) + .educationLevel(EducationLevel.RS) + .isDriver(true) + .isPilot(false) + .build(); - @Test - public void testEmployeeListNoElement() { - - try { - List employees = employeePersistence.list(); - - Employee empOne = - Employee.builder() - .id(10) - .name("Adam") - .birthday( - LocalDate.parse( - "10.10.2010", - DateTimeFormatter.ofPattern("dd.MM.yyyy"))) - .educationLevel(EducationLevel.RS) - .isDriver(true) - .isPilot(false) - .build(); - - Assert.assertFalse(employees.contains(empOne)); - - } catch (PersistenceException e) { - fail(); - } + Assert.assertFalse(employees.contains(empOne)); } } -- cgit v1.2.3-70-g09d2 From c6f72ff5d177e7ab61015408b64cfa2bf6c8e25c Mon Sep 17 00:00:00 2001 From: Tharre Date: Sat, 12 May 2018 18:55:51 +0200 Subject: Change interfaces to use Set instead of List --- .../controller/RegistrationWindowController.java | 8 +++++--- .../groupphase/einsatzverwaltung/dao/DBOperationDAO.java | 4 ++-- .../groupphase/einsatzverwaltung/dao/EmployeeDAO.java | 4 ++-- .../einsatzverwaltung/dao/EmployeeDatabaseDao.java | 8 ++++---- .../groupphase/einsatzverwaltung/dao/OperationDAO.java | 4 ++-- .../groupphase/einsatzverwaltung/dao/RegistrationDAO.java | 4 ++-- .../einsatzverwaltung/dao/RegistrationDatabaseDAO.java | 8 ++++---- .../groupphase/einsatzverwaltung/dao/VehicleDAO.java | 4 ++-- .../groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java | 8 ++++---- .../groupphase/einsatzverwaltung/dto/Operation.java | 6 +++--- .../einsatzverwaltung/dto/RegistrationValidator.java | 3 ++- .../einsatzverwaltung/service/EmployeeService.java | 4 ++-- .../einsatzverwaltung/service/EmployeeServiceImpl.java | 4 ++-- .../einsatzverwaltung/service/OperationService.java | 10 +++++----- .../einsatzverwaltung/service/OperationServiceImpl.java | 12 ++++++------ .../einsatzverwaltung/service/RegistrationService.java | 4 ++-- .../einsatzverwaltung/service/RegistrationServiceImpl.java | 4 ++-- .../groupphase/einsatzverwaltung/service/VehicleService.java | 4 ++-- .../einsatzverwaltung/service/VehicleServiceImpl.java | 8 ++++---- .../userInterface/CreateOperationController.java | 4 ++-- .../einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java | 10 +++++----- .../service/RegistrationServiceImplTest.java | 8 ++++---- .../groupphase/employee/EmployeePersistenceTest.java | 6 +++--- .../groupphase/operation/OperationServiceUnitTest.java | 12 ++++++------ 24 files changed, 77 insertions(+), 74 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java index bf413bb..9ed6147 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java @@ -15,8 +15,10 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.OffsetDateTime; import java.util.EnumSet; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Set; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -78,7 +80,7 @@ public class RegistrationWindowController { public void initialize() { // will have to be replaced for FlowPane try { - List vehicles = vehicleService.list(EnumSet.of(Status.ABGEMELDET)); + Set vehicles = vehicleService.list(EnumSet.of(Status.ABGEMELDET)); tcVehicles.setCellValueFactory(x -> new SimpleStringProperty(x.getValue().name())); tvVehicles.setItems(FXCollections.observableArrayList(vehicles)); } catch (ServiceException e) { @@ -92,7 +94,7 @@ public class RegistrationWindowController { alert.show(); } try { - List employees = employeeService.list(); + Set employees = employeeService.list(); tcEmployees.setCellValueFactory(x -> new SimpleStringProperty(x.getValue().name())); tvEmployees.setItems(FXCollections.observableArrayList(employees)); } catch (ServiceException e) { @@ -147,7 +149,7 @@ public class RegistrationWindowController { public void create() { LOG.debug("Create Button clicked"); - List registrations = new LinkedList<>(); + Set registrations = new HashSet<>(); for (Employee employee : chosenEmployees) { registrations.add( diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java index 672424a..1423240 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java @@ -10,7 +10,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.EnumSet; -import java.util.List; +import java.util.Set; public class DBOperationDAO implements OperationDAO { @@ -118,7 +118,7 @@ public class DBOperationDAO implements OperationDAO { } @Override - public List list(EnumSet statuses) throws PersistenceException { + public Set list(EnumSet statuses) throws PersistenceException { return null; } diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDAO.java index 564ce7c..539a8e5 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDAO.java @@ -3,7 +3,7 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import java.util.List; +import java.util.Set; public interface EmployeeDAO { @@ -31,7 +31,7 @@ public interface EmployeeDAO { * @return list containing all stored employees * @throws PersistenceException if loading the stored employees failed */ - List list() throws PersistenceException; + Set list() throws PersistenceException; /** * Remove employee with the given id from the store. diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java index 3e4ba12..8da79e7 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java @@ -11,8 +11,8 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Repository; @@ -89,12 +89,12 @@ public class EmployeeDatabaseDao implements EmployeeDAO { } @Override - public List list() throws PersistenceException { + public Set list() throws PersistenceException { try { ResultSet rs = listEmployee.executeQuery(); - List employees = new ArrayList<>(); + Set employees = new HashSet<>(); while (rs.next()) { Employee employee = diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAO.java index dd1a189..da90cc8 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAO.java @@ -5,7 +5,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.S import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import java.util.EnumSet; -import java.util.List; +import java.util.Set; public interface OperationDAO { @@ -44,7 +44,7 @@ public interface OperationDAO { * @return list containing all matched operations * @throws PersistenceException if loading the stored operations failed */ - List list(EnumSet statuses) throws PersistenceException; + Set list(EnumSet statuses) throws PersistenceException; int connectVehicleToOperation(long vehicleID, long operationID) throws PersistenceException; } diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDAO.java index ba8f909..36b6f1b 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDAO.java @@ -3,7 +3,7 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration; import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import java.util.List; +import java.util.Set; public interface RegistrationDAO { @@ -15,7 +15,7 @@ public interface RegistrationDAO { * @return a list of the ids that were assigned * @throws PersistenceException if the registration could not be persisted */ - List add(long vehicleId, List registrations) throws PersistenceException; + Set add(long vehicleId, Set registrations) throws PersistenceException; /** * Make registration with the given id inactive. diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java index 8fbcd18..13aeffc 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java @@ -10,8 +10,8 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -47,9 +47,9 @@ public class RegistrationDatabaseDAO implements RegistrationDAO { } @Override - public List add(long vehicleId, List registrations) + public Set add(long vehicleId, Set registrations) throws PersistenceException { - List returnValues = new LinkedList<>(); + Set returnValues = new HashSet<>(); try { connection.setAutoCommit(false); for (Registration registration : registrations) { diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDAO.java index 2f0df44..5782fd9 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDAO.java @@ -3,7 +3,7 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import java.util.List; +import java.util.Set; public interface VehicleDAO { @@ -31,7 +31,7 @@ public interface VehicleDAO { * @return list containing all stored vehicles * @throws PersistenceException if loading the stored vehicles failed */ - List list() throws PersistenceException; + Set list() throws PersistenceException; /** * Returns the vehicle with the given id. diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java index 3e8c0fc..dfdc04c 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDao.java @@ -11,8 +11,8 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import org.springframework.stereotype.Repository; @Repository @@ -103,9 +103,9 @@ public class VehicleDatabaseDao implements VehicleDAO { public void update(Vehicle vehicle) throws ElementNotFoundException, PersistenceException {} @Override - public List list() throws PersistenceException { + public Set list() throws PersistenceException { PreparedStatement pstmt = null; - List result = new LinkedList<>(); + Set result = new HashSet<>(); try { pstmt = jdbcConnectionManager diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Operation.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Operation.java index 6641437..d33995f 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Operation.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Operation.java @@ -2,7 +2,7 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto; import com.google.auto.value.AutoValue; import java.time.Instant; -import java.util.List; +import java.util.Set; import javax.annotation.Nullable; @AutoValue @@ -30,7 +30,7 @@ public abstract class Operation { public abstract Status status(); - public abstract List vehicles(); + public abstract Set vehicles(); @Nullable public abstract Instant created(); @@ -53,7 +53,7 @@ public abstract class Operation { public abstract Builder status(Status status); - public abstract Builder vehicles(List vehicles); + public abstract Builder vehicles(Set vehicles); public abstract Builder created(Instant created); diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/RegistrationValidator.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/RegistrationValidator.java index 295b615..610426c 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/RegistrationValidator.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/RegistrationValidator.java @@ -7,6 +7,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,7 +17,7 @@ public class RegistrationValidator { private RegistrationValidator() {} - public static void validate(Vehicle vehicle, List registrations) + public static void validate(Vehicle vehicle, Set registrations) throws InvalidVehicleException, InvalidRegistrationException { /* Vehicles and Employees are assumed to be valid. diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeService.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeService.java index 8753504..f7f8e71 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeService.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeService.java @@ -3,7 +3,7 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import java.util.List; +import java.util.Set; public interface EmployeeService { @@ -33,7 +33,7 @@ public interface EmployeeService { * @return list containing all stored employees * @throws ServiceException if loading the stored employees failed */ - List list() throws ServiceException; + Set list() throws ServiceException; /** * Remove employee with the given id from the store. diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java index ed0fb1c..b4119b0 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceImpl.java @@ -6,7 +6,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.EmployeeVal import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import java.util.List; +import java.util.Set; import org.springframework.stereotype.Service; @Service @@ -35,7 +35,7 @@ public class EmployeeServiceImpl implements EmployeeService { } @Override - public List list() throws ServiceException { + public Set list() throws ServiceException { try { return employeePersistence.list(); diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationService.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationService.java index e21c10b..98a2068 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationService.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationService.java @@ -7,8 +7,8 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationExcepti import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.util.EnumSet; -import java.util.List; -import javafx.collections.transformation.SortedList; +import java.util.Set; +import java.util.SortedSet; public interface OperationService { @@ -32,7 +32,7 @@ public interface OperationService { * @throws ServiceException if the vehicles could not be loaded or the operation could not be * persisted */ - void requestVehicles(long operationId, List vehicleIds) + void requestVehicles(long operationId, Set vehicleIds) throws InvalidOperationException, InvalidVehicleException, ServiceException; /** @@ -56,7 +56,7 @@ public interface OperationService { * @throws InvalidOperationException if the operationId is invalid or does not exist * @throws ServiceException if loading the stored vehicles failed */ - SortedList rankVehicles(long operationId) + SortedSet rankVehicles(long operationId) throws InvalidOperationException, ServiceException; /** @@ -66,5 +66,5 @@ public interface OperationService { * @return list containing all matched operations * @throws ServiceException if loading the stored operations failed */ - List list(EnumSet statuses) throws ServiceException; + Set list(EnumSet statuses) throws ServiceException; } diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java index 05a548c..7b69886 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java @@ -10,8 +10,8 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.util.EnumSet; -import java.util.List; -import javafx.collections.transformation.SortedList; +import java.util.Set; +import java.util.SortedSet; public class OperationServiceImpl implements OperationService { @@ -24,7 +24,7 @@ public class OperationServiceImpl implements OperationService { @Override public long add(Operation operation) throws InvalidOperationException, ServiceException { - List vehicles = operation.vehicles(); + Set vehicles = operation.vehicles(); boolean rtw = false; if (faultyInput(operation.opCode())) { throw new InvalidOperationException("Code ist ungültig!"); @@ -111,7 +111,7 @@ public class OperationServiceImpl implements OperationService { } @Override - public void requestVehicles(long operationId, List vehicleIds) + public void requestVehicles(long operationId, Set vehicleIds) throws InvalidOperationException, InvalidVehicleException, ServiceException {} @Override @@ -119,13 +119,13 @@ public class OperationServiceImpl implements OperationService { throws InvalidOperationException, ServiceException {} @Override - public SortedList rankVehicles(long operationId) + public SortedSet rankVehicles(long operationId) throws InvalidOperationException, ServiceException { return null; } @Override - public List list(EnumSet statuses) throws ServiceException { + public Set list(EnumSet statuses) throws ServiceException { return null; } } diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java index c345a2b..b7d8eef 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java @@ -4,7 +4,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registratio 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.ServiceException; -import java.util.List; +import java.util.Set; public interface RegistrationService { @@ -18,7 +18,7 @@ public interface RegistrationService { * @throws InvalidRegistrationException if the registration is invalid * @throws ServiceException if the registration could not be persisted */ - List add(long vehicleId, List registrations) + Set add(long vehicleId, Set registrations) throws InvalidVehicleException, InvalidRegistrationException, ServiceException; /** diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java index 8203ef3..54d46e7 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java @@ -10,7 +10,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidRegistrationExce import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import java.util.List; +import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +31,7 @@ public class RegistrationServiceImpl implements RegistrationService { } @Override - public List add(long vehicleId, List registrations) + public Set add(long vehicleId, Set registrations) throws InvalidVehicleException, InvalidRegistrationException, ServiceException { if (vehicleId <= 0) throw new InvalidVehicleException("VehicleId invalid"); diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleService.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleService.java index 6a96bc5..fe09ca1 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleService.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleService.java @@ -5,7 +5,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Sta import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.util.EnumSet; -import java.util.List; +import java.util.Set; public interface VehicleService { @@ -36,7 +36,7 @@ public interface VehicleService { * @return list containing all stored vehicles * @throws ServiceException if loading the stored vehicles failed */ - List list(EnumSet statuses) throws ServiceException; + Set list(EnumSet statuses) throws ServiceException; /** * Remove vehicle with the given id from the store. diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java index bbe668b..92386e1 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java @@ -8,7 +8,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.util.EnumSet; -import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import org.springframework.stereotype.Service; @@ -73,13 +73,13 @@ public class VehicleServiceImpl implements VehicleService { } @Override - public List list(EnumSet statuses) throws ServiceException { + public Set list(EnumSet statuses) throws ServiceException { if (statuses == null) { throw new ServiceException("statuses may not be null"); } - List vehicles; + Set vehicles; try { vehicles = vehiclePersistence.list(); @@ -89,7 +89,7 @@ public class VehicleServiceImpl implements VehicleService { return vehicles.stream() .filter(vehicle -> statuses.contains(vehicle.status())) - .collect(Collectors.toList()); + .collect(Collectors.toSet()); } @Override diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java index 5b645f3..7b04efe 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java @@ -17,7 +17,7 @@ import java.lang.invoke.MethodHandles; import java.time.Instant; import java.util.EnumSet; import java.util.LinkedList; -import java.util.List; +import java.util.Set; import javafx.collections.FXCollections; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -170,7 +170,7 @@ public class CreateOperationController { .created(Instant.now()) .opCode(txtCode.getText()) .status(Status.ACTIVE) - .vehicles(List.of(vehicles)) + .vehicles(Set.of(vehicles)) .severity(Severity.A) .build(); try { diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java index 03059ff..09699c5 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAOTest.java @@ -11,8 +11,8 @@ import java.nio.charset.Charset; import java.sql.SQLException; import java.time.Instant; import java.time.LocalDate; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import org.h2.tools.RunScript; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -79,7 +79,7 @@ public class RegistrationDatabaseDAOTest { @Test public void addRegistrationsShouldSucceed() throws PersistenceException { - List registrations = new LinkedList<>(); + Set registrations = new HashSet<>(); /* Vehicle vehicle = Vehicle.builder() .id(1) @@ -139,14 +139,14 @@ public class RegistrationDatabaseDAOTest { registrations.add(registration2); registrations.add(registration3); - List returnvalues = registrationDAO.add(1, registrations); + Set returnvalues = registrationDAO.add(1, registrations); assertFalse(returnvalues.isEmpty()); // can be improved... } @Test public void addRegistrationToInexistentVehicleShouldFail() throws PersistenceException { thrown.expect(PersistenceException.class); - List registrations = new LinkedList<>(); + Set registrations = new HashSet<>(); Employee employee = Employee.builder() .id(1) diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java index 88642ee..95d8d77 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImplTest.java @@ -21,8 +21,8 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.time.Instant; import java.time.LocalDate; import java.time.temporal.ChronoUnit; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -60,7 +60,7 @@ public class RegistrationServiceImplTest { throws InvalidRegistrationException, ServiceException, InvalidVehicleException { RegistrationService registrationService = new RegistrationServiceImpl(registrationDAO, vehicleDAO); - List registrations = new LinkedList<>(); + Set registrations = new HashSet<>(); Vehicle vehicle = Vehicle.builder() .id(1) @@ -117,7 +117,7 @@ public class RegistrationServiceImplTest { thrown.expect(InvalidRegistrationException.class); RegistrationService registrationService = new RegistrationServiceImpl(registrationDAO, vehicleDAO); - List registrations = new LinkedList<>(); + Set registrations = new HashSet<>(); Vehicle vehicle = Vehicle.builder() .id(1) diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java index e8d0d4d..5099976 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java @@ -9,7 +9,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; import java.io.InputStream; import java.sql.Types; import java.time.LocalDate; -import java.util.List; +import java.util.Set; import org.dbunit.DBTestCase; import org.dbunit.PropertiesBasedJdbcDatabaseTester; import org.dbunit.database.DatabaseConfig; @@ -69,7 +69,7 @@ public class EmployeePersistenceTest extends DBTestCase { } public void testListEmployees() throws PersistenceException { - List employees = employeePersistence.list(); + Set employees = employeePersistence.list(); System.out.println(LocalDate.parse("2010-10-10")); Employee empOne = @@ -109,7 +109,7 @@ public class EmployeePersistenceTest extends DBTestCase { } public void testEmployeeListNoElement() throws PersistenceException { - List employees = employeePersistence.list(); + Set employees = employeePersistence.list(); Employee empOne = Employee.builder() diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java index fc10553..2b1e2f0 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java @@ -19,7 +19,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationExcepti import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.time.Instant; -import java.util.List; +import java.util.Set; import org.junit.Assert; import org.junit.Test; @@ -51,7 +51,7 @@ public class OperationServiceUnitTest { .destination("Wiedner Hauptstraße 35, Wien") .additionalInfo("HTU Wien") .severity(Severity.B) - .vehicles(List.of(vehicle)) + .vehicles(Set.of(vehicle)) .build(); try { Assert.assertThat(operationService.add(operation), is(1L)); @@ -87,7 +87,7 @@ public class OperationServiceUnitTest { .destination("Wiedner Hauptstraße 35, Wien") .additionalInfo("HTU Wien") .severity(Severity.B) - .vehicles(List.of(vehicle, vehicle1)) + .vehicles(Set.of(vehicle, vehicle1)) .build(); try { Assert.assertThat(operationService.add(operation), is(1L)); @@ -106,7 +106,7 @@ public class OperationServiceUnitTest { .destination("Wiedner Hauptstraße 35, Wien") .additionalInfo("HTU Wien") .severity(Severity.B) - .vehicles(List.of()) + .vehicles(Set.of()) .build(); try { Assert.assertThat(operationService.add(operation), is(1L)); @@ -125,7 +125,7 @@ public class OperationServiceUnitTest { .destination("") .additionalInfo("HTU Wien") .severity(Severity.B) - .vehicles(List.of()) + .vehicles(Set.of()) .build(); try { Assert.assertThat(operationService.add(operation), is(1L)); @@ -144,7 +144,7 @@ public class OperationServiceUnitTest { .destination("Römergasse 7, 2500 Baden") .additionalInfo("HTU Wien") .severity(Severity.B) - .vehicles(List.of()) + .vehicles(Set.of()) .build(); try { Assert.assertThat(operationService.add(operation), is(1L)); -- cgit v1.2.3-70-g09d2 From 605cbd804d558de5085f4c3889c70fc56c1953c8 Mon Sep 17 00:00:00 2001 From: Tharre Date: Sun, 13 May 2018 23:53:30 +0200 Subject: Extract dbunit JDBC modifications to JdbcTestCase --- .../employee/EmployeePersistenceTest.java | 45 ++----------------- .../assignment/groupphase/util/JdbcTestCase.java | 50 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 42 deletions(-) create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java index 5099976..d4f5646 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java @@ -5,35 +5,21 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDat import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.io.InputStream; -import java.sql.Types; import java.time.LocalDate; import java.util.Set; -import org.dbunit.DBTestCase; -import org.dbunit.PropertiesBasedJdbcDatabaseTester; -import org.dbunit.database.DatabaseConfig; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; -import org.dbunit.dataset.datatype.DataType; -import org.dbunit.dataset.datatype.DataTypeException; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; import org.junit.Assert; -public class EmployeePersistenceTest extends DBTestCase { - - private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); - private static final String JDBC_URL = - "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; +public class EmployeePersistenceTest extends JdbcTestCase { private EmployeeDAO employeePersistence; public EmployeePersistenceTest() throws PersistenceException { - employeePersistence = new EmployeeDatabaseDao(new JDBCConnectionManager(JDBC_URL)); - - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + employeePersistence = new EmployeeDatabaseDao(jdbcConnectionManager); } @Override @@ -43,31 +29,6 @@ public class EmployeePersistenceTest extends DBTestCase { return new FlatXmlDataSetBuilder().build(res); } - @Override - protected void setUpDatabaseConfig(DatabaseConfig config) { - PostgresqlDataTypeFactory factory = - new PostgresqlDataTypeFactory() { - @Override - public boolean isEnumType(String sqlTypeName) { - if (sqlTypeName.equalsIgnoreCase("enum")) return true; - - return super.isEnumType(sqlTypeName); - } - - @Override - public DataType createDataType(int sqlType, String sqlTypeName) - throws DataTypeException { - if (isEnumType(sqlTypeName)) { - sqlType = Types.VARCHAR; - } - - return super.createDataType(sqlType, sqlTypeName); - } - }; - - config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); - } - public void testListEmployees() throws PersistenceException { Set employees = employeePersistence.list(); diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java new file mode 100644 index 0000000..5390841 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/JdbcTestCase.java @@ -0,0 +1,50 @@ +package at.ac.tuwien.sepm.assignment.groupphase.util; + +import java.sql.Types; +import org.dbunit.DBTestCase; +import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.database.DatabaseConfig; +import org.dbunit.dataset.datatype.DataType; +import org.dbunit.dataset.datatype.DataTypeException; +import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; + +public abstract class JdbcTestCase extends DBTestCase { + + private static final String JDBC_DRIVER = "org.h2.Driver"; + private static final String JDBC_URL = + "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; + + protected final JDBCConnectionManager jdbcConnectionManager; + + protected JdbcTestCase() { + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + + jdbcConnectionManager = new JDBCConnectionManager(JDBC_URL); + } + + @Override + protected void setUpDatabaseConfig(DatabaseConfig config) { + PostgresqlDataTypeFactory factory = + new PostgresqlDataTypeFactory() { + @Override + public boolean isEnumType(String sqlTypeName) { + if (sqlTypeName.equalsIgnoreCase("enum")) return true; + + return super.isEnumType(sqlTypeName); + } + + @Override + public DataType createDataType(int sqlType, String sqlTypeName) + throws DataTypeException { + if (isEnumType(sqlTypeName)) { + sqlType = Types.VARCHAR; + } + + return super.createDataType(sqlType, sqlTypeName); + } + }; + + config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); + } +} -- cgit v1.2.3-70-g09d2 From 8e0abdfcbc798c8ed0f85af1f641d58d341fe83a Mon Sep 17 00:00:00 2001 From: Tharre Date: Mon, 21 May 2018 15:21:43 +0200 Subject: JdbcTestCase changed to work with Junit 4 --- .../employee/EmployeePersistenceTest.java | 2 +- .../assignment/groupphase/util/JdbcTestCase.java | 101 +++++++++++++++++++-- 2 files changed, 92 insertions(+), 11 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java index d4f5646..71af3bd 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java @@ -19,7 +19,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { private EmployeeDAO employeePersistence; public EmployeePersistenceTest() throws PersistenceException { - employeePersistence = new EmployeeDatabaseDao(jdbcConnectionManager); + employeePersistence = new EmployeeDatabaseDao(getJdbcConnectionManager()); } @Override 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 5390841..dae93ff 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 @@ -1,30 +1,87 @@ package at.ac.tuwien.sepm.assignment.groupphase.util; +import java.lang.invoke.MethodHandles; +import java.sql.SQLException; import java.sql.Types; -import org.dbunit.DBTestCase; -import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.DefaultDatabaseTester; +import org.dbunit.IDatabaseTester; +import org.dbunit.IOperationListener; import org.dbunit.database.DatabaseConfig; +import org.dbunit.database.DatabaseConnection; +import org.dbunit.database.IDatabaseConnection; +import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.datatype.DataType; import org.dbunit.dataset.datatype.DataTypeException; import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; +import org.dbunit.operation.DatabaseOperation; +import org.junit.After; +import org.junit.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; -public abstract class JdbcTestCase extends DBTestCase { +@Component +public abstract class JdbcTestCase { - private static final String JDBC_DRIVER = "org.h2.Driver"; + private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static final String JDBC_URL = "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; - protected final JDBCConnectionManager jdbcConnectionManager; + private IDatabaseTester dbTester; + private IDatabaseConnection connection; + private IOperationListener operationListener; + private JDBCConnectionManager jdbcConnectionManager; protected JdbcTestCase() { - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); - jdbcConnectionManager = new JDBCConnectionManager(JDBC_URL); } - @Override - protected void setUpDatabaseConfig(DatabaseConfig config) { + protected abstract IDataSet getDataSet() throws Exception; + + protected JDBCConnectionManager getJdbcConnectionManager() { + return jdbcConnectionManager; + } + + protected IDatabaseConnection getConnection() throws Exception { + if (connection == null) + connection = new DatabaseConnection(jdbcConnectionManager.getConnection(), null, true); + + return connection; + } + + private IOperationListener getOperationListener() { + if (operationListener == null) { + operationListener = + new IOperationListener() { + @Override + public void connectionRetrieved(IDatabaseConnection connection) { + setUpDatabaseConfig(connection.getConfig()); + } + + @Override + public void operationSetUpFinished(IDatabaseConnection connection) { + LOG.debug("operationSetUpFinished(connection={}) - start", connection); + } + + @Override + public void operationTearDownFinished(IDatabaseConnection connection) { + LOG.debug( + "operationTearDownFinished(connection={}) - start", connection); + try { + connection.close(); + } catch (SQLException e) { + LOG.error("Failed to close connection:" + e); + e.printStackTrace(); + } + } + }; + } + + return operationListener; + } + + // override DBUnit's enum handling + private void setUpDatabaseConfig(DatabaseConfig config) { PostgresqlDataTypeFactory factory = new PostgresqlDataTypeFactory() { @Override @@ -47,4 +104,28 @@ public abstract class JdbcTestCase extends DBTestCase { config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); } + + @Before + public void setUp() throws Exception { + IDataSet dataSet = getDataSet(); + + dbTester = new DefaultDatabaseTester(getConnection()); + getOperationListener().connectionRetrieved(getConnection()); + + dbTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT); + dbTester.setTearDownOperation(DatabaseOperation.NONE); + dbTester.setDataSet(dataSet); + dbTester.setOperationListener(getOperationListener()); + dbTester.onSetup(); + } + + @After + public void tearDown() throws Exception { + try { + dbTester.onTearDown(); + getConnection().close(); + } finally { + dbTester = null; + } + } } -- cgit v1.2.3-70-g09d2 From b5cfa2ce349b44f4c92a8a4fc397afe040f21c7a Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Thu, 17 May 2018 18:23:02 +0200 Subject: Restructure test folder --- .../controller/CreateNewEmployeeApplication.java | 53 ++++ .../CreateNewEmployeeControllerTest.java | 85 +++++++ .../controller/CreateNewVehicleApplication.java | 51 ++++ .../controller/CreateNewVehicleControllerTest.java | 79 ++++++ .../dao/EmployeePersistenceTest.java | 85 +++++++ .../dao/OperationPersistenceTest.java | 127 +++++++++ .../service/CarAddTestService.java | 281 ++++++++++++++++++++ .../service/EmployeeServiceTest.java | 66 +++++ .../service/EmployeeServiceTestConfiguration.java | 17 ++ .../service/OperationServiceComponentTest.java | 150 +++++++++++ .../service/OperationServiceUnitTest.java | 153 +++++++++++ .../service/VehicleServiceTestConfiguration.java | 17 ++ .../employee/CreateNewEmployeeApplication.java | 53 ---- .../employee/CreateNewEmployeeControllerTest.java | 85 ------- .../employee/EmployeePersistenceTest.java | 87 ------- .../groupphase/employee/EmployeeServiceTest.java | 68 ----- .../employee/EmployeeServiceTestConfiguration.java | 19 -- .../operation/OperationPersistenceTest.java | 109 -------- .../operation/OperationServiceComponentTest.java | 130 ---------- .../operation/OperationServiceUnitTest.java | 155 ----------- .../groupphase/vehicle/CarAddTestService.java | 283 --------------------- .../vehicle/CreateNewVehicleApplication.java | 51 ---- .../vehicle/CreateNewVehicleControllerTest.java | 79 ------ .../vehicle/VehicleServiceTestConfiguration.java | 19 -- 24 files changed, 1164 insertions(+), 1138 deletions(-) create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeApplication.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeControllerTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleApplication.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleControllerTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationPersistenceTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/CarAddTestService.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTestConfiguration.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationPersistenceTest.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CarAddTestService.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleApplication.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/CreateNewVehicleControllerTest.java delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehicleServiceTestConfiguration.java (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') 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 new file mode 100644 index 0000000..e1b3714 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeApplication.java @@ -0,0 +1,53 @@ +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/CreateNewEmployeeControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeControllerTest.java new file mode 100644 index 0000000..7f95950 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeControllerTest.java @@ -0,0 +1,85 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; + +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.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 CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest { + + private EmployeeService employeeService; + + @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); + } + + @After + public void cleanup() throws Exception { + FxToolkit.cleanupStages(); + } + + @Test + public void testClickAddValidEmployee() throws InvalidEmployeeException, ServiceException { + + when(employeeService.add(any())).thenReturn(1L); + + clickOn("#inputName", Motion.DIRECT, MouseButton.PRIMARY); + write("Name"); + clickOn("#btnCreate", Motion.DIRECT, MouseButton.PRIMARY); + + Stage alertDialog = Helper.getTopModalStage(robotContext()); + Assert.assertNotNull(alertDialog); + + DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); + Assert.assertEquals("Erfolgreich angelegt", dialogPane.getHeaderText()); + } + + @Test + public void testClickAddInvalidEmployee() throws InvalidEmployeeException, ServiceException { + + when(employeeService.add(any())).thenThrow(InvalidEmployeeException.class); + + moveTo("#inputName"); + 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()); + } + + @Test + public void testClickAddEmployeeWithServiceException() + throws InvalidEmployeeException, ServiceException { + + when(employeeService.add(any())).thenThrow(ServiceException.class); + + clickOn("#inputName", Motion.DIRECT, MouseButton.PRIMARY); + write("Test"); + clickOn("#btnCreate", Motion.DIRECT, MouseButton.PRIMARY); + + Stage alertDialog = Helper.getTopModalStage(robotContext()); + Assert.assertNotNull(alertDialog); + + DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); + Assert.assertEquals("Speicherfehler", dialogPane.getHeaderText()); + } +} 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 new file mode 100644 index 0000000..ff46938 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleApplication.java @@ -0,0 +1,51 @@ +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/CreateNewVehicleControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleControllerTest.java new file mode 100644 index 0000000..08e3fde --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewVehicleControllerTest.java @@ -0,0 +1,79 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; + +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/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java new file mode 100644 index 0000000..8633b9d --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -0,0 +1,85 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; +import java.io.InputStream; +import java.time.LocalDate; +import java.util.Set; +import org.dbunit.dataset.DataSetException; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.junit.Assert; + +public class EmployeePersistenceTest extends JdbcTestCase { + + private EmployeeDAO employeePersistence; + + public EmployeePersistenceTest() throws PersistenceException { + employeePersistence = new EmployeeDatabaseDao(getJdbcConnectionManager()); + } + + @Override + protected IDataSet getDataSet() throws DataSetException { + InputStream res = + getClass().getClassLoader().getResourceAsStream("employeeServiceTestData.xml"); + return new FlatXmlDataSetBuilder().build(res); + } + + public void testListEmployees() throws PersistenceException { + Set employees = employeePersistence.list(); + + System.out.println(LocalDate.parse("2010-10-10")); + Employee empOne = + Employee.builder() + .id(1) + .name("Adam") + .birthday(LocalDate.parse("2010-10-10")) + .educationLevel(EducationLevel.RS) + .isDriver(true) + .isPilot(false) + .build(); + + Employee empTwo = + Employee.builder() + .id(2) + .name("Max") + .birthday(LocalDate.parse("1990-11-11")) + .educationLevel(EducationLevel.NFS) + .isDriver(false) + .isPilot(false) + .build(); + + Employee empThree = + Employee.builder() + .id(3) + .name("Lisa") + .birthday(LocalDate.parse("1999-10-16")) + .educationLevel(EducationLevel.NKI) + .isDriver(true) + .isPilot(false) + .build(); + + Assert.assertTrue(employees.contains(empOne)); + Assert.assertTrue(employees.contains(empTwo)); + Assert.assertTrue(employees.contains(empThree)); + Assert.assertEquals(3, employees.size()); + } + + public void testEmployeeListNoElement() throws PersistenceException { + Set employees = employeePersistence.list(); + + Employee empOne = + Employee.builder() + .id(10) + .name("Adam") + .birthday(LocalDate.parse("2010-10-10")) + .educationLevel(EducationLevel.RS) + .isDriver(true) + .isPilot(false) + .build(); + + Assert.assertFalse(employees.contains(empOne)); + } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationPersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationPersistenceTest.java new file mode 100644 index 0000000..a5e4993 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationPersistenceTest.java @@ -0,0 +1,127 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; + +import static junit.framework.TestCase.fail; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import java.nio.charset.Charset; +import java.sql.SQLException; +import java.time.Instant; +import java.util.Arrays; +import java.util.Set; +import org.h2.tools.RunScript; +import org.junit.BeforeClass; +import org.junit.Test; + +public class OperationPersistenceTest { + + private final OperationDAO operationDAO = + new DBOperationDAO(new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")); + + @BeforeClass + public static void createSchema() throws SQLException { + RunScript.execute( + "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", + "", + "", + "classpath:sql/database.sql", + Charset.forName("UTF8"), + false); + } + + @Test + public void addOperationTest() { + Vehicle vehicle = + Vehicle.builder() + .status(Vehicle.Status.FREI_FUNK) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of(vehicle)) + .build(); + try { + operationDAO.add(operation); + } catch (PersistenceException e) { + fail(); + } + } + + @Test(expected = PersistenceException.class) + public void addFaultyOperationTest() throws PersistenceException { + Vehicle vehicle = + Vehicle.builder() + .status(Vehicle.Status.FREI_FUNK) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode(String.valueOf(Arrays.stream(new int[200]).map(i -> 'a'))) + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of(vehicle)) + .build(); + operationDAO.add(operation); + } + + @Test(expected = PersistenceException.class) + public void addFaultyOperation1Test() throws PersistenceException { + operationDAO.add(null); + } + + @Test(expected = PersistenceException.class) + public void addFaultyOperation2Test() throws PersistenceException { + Vehicle vehicle = + Vehicle.builder() + .status(Vehicle.Status.FREI_FUNK) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination( + "Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien ") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of(vehicle)) + .build(); + operationDAO.add(operation); + } + + @Test(expected = PersistenceException.class) + public void addConnectionTest() throws PersistenceException { + operationDAO.connectVehicleToOperation(-1, 0); + } + + // TODO: ADD CONNECTION TESTS + // KOMMT ID ZURÜCK?*/ +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/CarAddTestService.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/CarAddTestService.java new file mode 100644 index 0000000..fd8b43f --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/CarAddTestService.java @@ -0,0 +1,281 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +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.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/einsatzverwaltung/service/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java new file mode 100644 index 0000000..c6b1423 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java @@ -0,0 +1,66 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +import static junit.framework.TestCase.fail; +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDatabaseDao; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import java.time.LocalDate; +import org.junit.Assert; +import org.junit.Test; + +public class EmployeeServiceTest { + + private final EmployeeDAO employeePersistence = mock(EmployeeDatabaseDao.class); + private final EmployeeService employeeService = new EmployeeServiceImpl(employeePersistence); + + public EmployeeServiceTest() throws PersistenceException { + when(employeePersistence.add(any())).thenReturn(1L); + } + + @Test + public void testAddValidEmployee() { + + Employee employee = + Employee.builder() + .name("Testperson") + .birthday(LocalDate.MIN) + .educationLevel(EducationLevel.NA) + .isDriver(true) + .isPilot(false) + .build(); + + try { + Assert.assertThat(employeeService.add(employee), is(1L)); + } catch (InvalidEmployeeException | ServiceException e) { + fail(); + } + } + + @Test(expected = InvalidEmployeeException.class) + public void testAddInvalidEmployee() throws InvalidEmployeeException { + + Employee employee = + Employee.builder() + .name("") + .birthday(LocalDate.MIN) + .educationLevel(EducationLevel.NA) + .isDriver(true) + .isPilot(false) + .build(); + + try { + employeeService.add(employee); + } catch (ServiceException e) { + fail(); + } + } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java new file mode 100644 index 0000000..6bf2275 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTestConfiguration.java @@ -0,0 +1,17 @@ +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/OperationServiceComponentTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java new file mode 100644 index 0000000..8e13d0e --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java @@ -0,0 +1,150 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +import static junit.framework.TestCase.fail; +import static org.hamcrest.CoreMatchers.is; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.DBOperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +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.InvalidOperationException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import java.time.Instant; +import java.util.Set; +import org.junit.Assert; +import org.junit.Test; + +public class OperationServiceComponentTest { + + private final OperationDAO operationDAO = + new DBOperationDAO(new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")); + private final OperationService operationService = new OperationServiceImpl(operationDAO); + + /*@Test + public void testaddOperationTest() { + Vehicle vehicle = + Vehicle.builder() + .status(Vehicle.Status.FREI_FUNK) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of(vehicle)) + .build(); + try { + // TODO: OPERATION DOES NOT WORK + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (InvalidOperationException | ServiceException e) { + e.printStackTrace(); + fail(); + } + }*/ + + @Test(expected = InvalidOperationException.class) + public void testaddFaultyOperationTest() throws InvalidOperationException { + Vehicle vehicle = + Vehicle.builder() + .status(Vehicle.Status.FREI_FUNK) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + Vehicle vehicle1 = + Vehicle.builder() + .status(Vehicle.Status.ABGEMELDET) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of(vehicle, vehicle1)) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + fail(); + } + } + + @Test(expected = InvalidOperationException.class) + public void testaddFaultyOperation2Test() throws InvalidOperationException { + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of()) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + e.printStackTrace(); + } + } + + @Test(expected = InvalidOperationException.class) + public void testaddFaultyOperation3Test() throws InvalidOperationException { + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of()) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + e.printStackTrace(); + } + } + + @Test(expected = InvalidOperationException.class) + public void testaddFaultyOperation4Test() throws InvalidOperationException { + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("") + .created(Instant.now()) + .destination("Römergasse 7, 2500 Baden") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of()) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + e.printStackTrace(); + } + } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java new file mode 100644 index 0000000..29a840b --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java @@ -0,0 +1,153 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +import static junit.framework.TestCase.fail; +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +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.InvalidOperationException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import java.time.Instant; +import java.util.Set; +import org.junit.Assert; +import org.junit.Test; + +public class OperationServiceUnitTest { + private final OperationDAO operationDAO = mock(OperationDAO.class); + private final OperationService operationService = new OperationServiceImpl(operationDAO); + + @Test + public void addOperationTest() { + try { + when(operationDAO.add(any())).thenReturn(1L); + } catch (PersistenceException e) { + fail(); + } + Vehicle vehicle = + Vehicle.builder() + .status(Vehicle.Status.FREI_FUNK) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of(vehicle)) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (InvalidOperationException | ServiceException e) { + fail(); + } + } + + @Test(expected = InvalidOperationException.class) + public void addFaultyOperationTest() throws InvalidOperationException { + Vehicle vehicle = + Vehicle.builder() + .status(Vehicle.Status.FREI_FUNK) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + Vehicle vehicle1 = + Vehicle.builder() + .status(Vehicle.Status.ABGEMELDET) + .constructionType(ConstructionType.HOCHDACH) + .name("BKTW_123") + .hasNef(true) + .type(VehicleType.BKTW) + .build(); + + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of(vehicle, vehicle1)) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + fail(); + } + } + + @Test(expected = InvalidOperationException.class) + public void addFaultyOperation2Test() throws InvalidOperationException { + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of()) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + e.printStackTrace(); + } + } + + @Test(expected = InvalidOperationException.class) + public void addFaultyOperation3Test() throws InvalidOperationException { + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("ALP-95E7") + .created(Instant.now()) + .destination("") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of()) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + e.printStackTrace(); + } + } + + @Test(expected = InvalidOperationException.class) + public void addFaultyOperation4Test() throws InvalidOperationException { + Operation operation = + Operation.builder() + .status(Status.ACTIVE) + .opCode("") + .created(Instant.now()) + .destination("Römergasse 7, 2500 Baden") + .additionalInfo("HTU Wien") + .severity(Severity.B) + .vehicles(Set.of()) + .build(); + try { + Assert.assertThat(operationService.add(operation), is(1L)); + } catch (ServiceException e) { + e.printStackTrace(); + } + } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java new file mode 100644 index 0000000..895973a --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceTestConfiguration.java @@ -0,0 +1,17 @@ +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/employee/CreateNewEmployeeApplication.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java deleted file mode 100644 index e9f4801..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeApplication.java +++ /dev/null @@ -1,53 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; - -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/employee/CreateNewEmployeeControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java deleted file mode 100644 index eb1a728..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; - -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.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 CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest { - - private EmployeeService employeeService; - - @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); - } - - @After - public void cleanup() throws Exception { - FxToolkit.cleanupStages(); - } - - @Test - public void testClickAddValidEmployee() throws InvalidEmployeeException, ServiceException { - - when(employeeService.add(any())).thenReturn(1L); - - clickOn("#inputName", Motion.DIRECT, MouseButton.PRIMARY); - write("Name"); - clickOn("#btnCreate", Motion.DIRECT, MouseButton.PRIMARY); - - Stage alertDialog = Helper.getTopModalStage(robotContext()); - Assert.assertNotNull(alertDialog); - - DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); - Assert.assertEquals("Erfolgreich angelegt", dialogPane.getHeaderText()); - } - - @Test - public void testClickAddInvalidEmployee() throws InvalidEmployeeException, ServiceException { - - when(employeeService.add(any())).thenThrow(InvalidEmployeeException.class); - - moveTo("#inputName"); - 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()); - } - - @Test - public void testClickAddEmployeeWithServiceException() - throws InvalidEmployeeException, ServiceException { - - when(employeeService.add(any())).thenThrow(ServiceException.class); - - clickOn("#inputName", Motion.DIRECT, MouseButton.PRIMARY); - write("Test"); - clickOn("#btnCreate", Motion.DIRECT, MouseButton.PRIMARY); - - Stage alertDialog = Helper.getTopModalStage(robotContext()); - Assert.assertNotNull(alertDialog); - - DialogPane dialogPane = (DialogPane) alertDialog.getScene().getRoot(); - Assert.assertEquals("Speicherfehler", dialogPane.getHeaderText()); - } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java deleted file mode 100644 index 71af3bd..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java +++ /dev/null @@ -1,87 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; - -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDatabaseDao; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; -import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; -import java.io.InputStream; -import java.time.LocalDate; -import java.util.Set; -import org.dbunit.dataset.DataSetException; -import org.dbunit.dataset.IDataSet; -import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.junit.Assert; - -public class EmployeePersistenceTest extends JdbcTestCase { - - private EmployeeDAO employeePersistence; - - public EmployeePersistenceTest() throws PersistenceException { - employeePersistence = new EmployeeDatabaseDao(getJdbcConnectionManager()); - } - - @Override - protected IDataSet getDataSet() throws DataSetException { - InputStream res = - getClass().getClassLoader().getResourceAsStream("employeeServiceTestData.xml"); - return new FlatXmlDataSetBuilder().build(res); - } - - public void testListEmployees() throws PersistenceException { - Set employees = employeePersistence.list(); - - System.out.println(LocalDate.parse("2010-10-10")); - Employee empOne = - Employee.builder() - .id(1) - .name("Adam") - .birthday(LocalDate.parse("2010-10-10")) - .educationLevel(EducationLevel.RS) - .isDriver(true) - .isPilot(false) - .build(); - - Employee empTwo = - Employee.builder() - .id(2) - .name("Max") - .birthday(LocalDate.parse("1990-11-11")) - .educationLevel(EducationLevel.NFS) - .isDriver(false) - .isPilot(false) - .build(); - - Employee empThree = - Employee.builder() - .id(3) - .name("Lisa") - .birthday(LocalDate.parse("1999-10-16")) - .educationLevel(EducationLevel.NKI) - .isDriver(true) - .isPilot(false) - .build(); - - Assert.assertTrue(employees.contains(empOne)); - Assert.assertTrue(employees.contains(empTwo)); - Assert.assertTrue(employees.contains(empThree)); - Assert.assertEquals(3, employees.size()); - } - - public void testEmployeeListNoElement() throws PersistenceException { - Set employees = employeePersistence.list(); - - Employee empOne = - Employee.builder() - .id(10) - .name("Adam") - .birthday(LocalDate.parse("2010-10-10")) - .educationLevel(EducationLevel.RS) - .isDriver(true) - .isPilot(false) - .build(); - - Assert.assertFalse(employees.contains(empOne)); - } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java deleted file mode 100644 index 47328b3..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; - -import static junit.framework.TestCase.fail; -import static org.hamcrest.CoreMatchers.is; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDatabaseDao; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeServiceImpl; -import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import java.time.LocalDate; -import org.junit.Assert; -import org.junit.Test; - -public class EmployeeServiceTest { - - private final EmployeeDAO employeePersistence = mock(EmployeeDatabaseDao.class); - private final EmployeeService employeeService = new EmployeeServiceImpl(employeePersistence); - - public EmployeeServiceTest() throws PersistenceException { - when(employeePersistence.add(any())).thenReturn(1L); - } - - @Test - public void testAddValidEmployee() { - - Employee employee = - Employee.builder() - .name("Testperson") - .birthday(LocalDate.MIN) - .educationLevel(EducationLevel.NA) - .isDriver(true) - .isPilot(false) - .build(); - - try { - Assert.assertThat(employeeService.add(employee), is(1L)); - } catch (InvalidEmployeeException | ServiceException e) { - fail(); - } - } - - @Test(expected = InvalidEmployeeException.class) - public void testAddInvalidEmployee() throws InvalidEmployeeException { - - Employee employee = - Employee.builder() - .name("") - .birthday(LocalDate.MIN) - .educationLevel(EducationLevel.NA) - .isDriver(true) - .isPilot(false) - .build(); - - try { - employeeService.add(employee); - } catch (ServiceException e) { - fail(); - } - } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTestConfiguration.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTestConfiguration.java deleted file mode 100644 index 3668ef4..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeeServiceTestConfiguration.java +++ /dev/null @@ -1,19 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.employee; - -import static org.mockito.Mockito.mock; - -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeServiceImpl; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -@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/operation/OperationPersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationPersistenceTest.java deleted file mode 100644 index be612d0..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationPersistenceTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.operation; - -public class OperationPersistenceTest { - - /*private final OperationDAO operationDAO = - new DBOperationDAO(new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")); - - @BeforeClass - public static void createSchema() throws SQLException { - RunScript.execute( - "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", - "", - "", - "classpath:sql/database.sql", - Charset.forName("UTF8"), - false); - } - - @Test - public void addOperationTest() { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of(vehicle)) - .build(); - try { - operationDAO.add(operation); - } catch (PersistenceException e) { - fail(); - } - } - - /*@Test(expected = PersistenceException.class) - public void addFaultyOperationTest() throws PersistenceException { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of(vehicle)) - .build(); - operationDAO.add(operation); - }*/ - /* - - @Test(expected = PersistenceException.class) - public void addFaultyOperation1Test() throws PersistenceException { - operationDAO.add(null); - } - - @Test(expected = PersistenceException.class) - public void addFaultyOperation2Test() throws PersistenceException { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination( - "Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien Wiednerstraße 888, 1010 Wien ") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of(vehicle)) - .build(); - operationDAO.add(operation); - } - - @Test(expected = PersistenceException.class) - public void addConnectionTest() throws PersistenceException { - operationDAO.connectVehicleToOperation(-1, 0); - } - - // TODO: ADD CONNECTION TESTS - // KOMMT ID ZURÜCK?*/ -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java deleted file mode 100644 index 286ee07..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java +++ /dev/null @@ -1,130 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.operation; - -public class OperationServiceComponentTest { - - /*private final OperationDAO operationDAO = - new DBOperationDAO(new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")); - private final OperationService operationService = new OperationServiceImpl(operationDAO); - - @Test - public void addOperationTest() { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of(vehicle)) - .build(); - try { - // TODO: OPERATION DOES NOT WORK - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (InvalidOperationException | ServiceException e) { - fail(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperationTest() throws InvalidOperationException { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - Vehicle vehicle1 = - Vehicle.builder() - .status(Vehicle.Status.ABGEMELDET) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of(vehicle, vehicle1)) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - fail(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperation2Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperation3Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperation4Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("") - .created(Instant.now()) - .destination("Römergasse 7, 2500 Baden") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(List.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - }*/ -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java deleted file mode 100644 index 2b1e2f0..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java +++ /dev/null @@ -1,155 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.operation; - -import static junit.framework.TestCase.fail; -import static org.hamcrest.CoreMatchers.is; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationServiceImpl; -import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import java.time.Instant; -import java.util.Set; -import org.junit.Assert; -import org.junit.Test; - -public class OperationServiceUnitTest { - private final OperationDAO operationDAO = mock(OperationDAO.class); - private final OperationService operationService = new OperationServiceImpl(operationDAO); - - @Test - public void addOperationTest() { - try { - when(operationDAO.add(any())).thenReturn(1L); - } catch (PersistenceException e) { - fail(); - } - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of(vehicle)) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (InvalidOperationException | ServiceException e) { - fail(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperationTest() throws InvalidOperationException { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - Vehicle vehicle1 = - Vehicle.builder() - .status(Vehicle.Status.ABGEMELDET) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of(vehicle, vehicle1)) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - fail(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperation2Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperation3Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } - - @Test(expected = InvalidOperationException.class) - public void addFaultyOperation4Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("") - .created(Instant.now()) - .destination("Römergasse 7, 2500 Baden") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } -} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/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/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); - } -} -- cgit v1.2.3-70-g09d2 From e54b425cd20206cb38fccb20f3e37076423aad7f Mon Sep 17 00:00:00 2001 From: Tharre Date: Mon, 21 May 2018 20:54:38 +0200 Subject: Add convenience functions to JdbcTestCase #27059 --- .../assignment/groupphase/util/JdbcTestCase.java | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') 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 dae93ff..daf4ec4 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 @@ -1,5 +1,8 @@ package at.ac.tuwien.sepm.assignment.groupphase.util; +import static org.dbunit.Assertion.assertEquals; + +import java.io.InputStream; import java.lang.invoke.MethodHandles; import java.sql.SQLException; import java.sql.Types; @@ -9,9 +12,11 @@ import org.dbunit.IOperationListener; import org.dbunit.database.DatabaseConfig; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; +import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.datatype.DataType; import org.dbunit.dataset.datatype.DataTypeException; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; import org.dbunit.operation.DatabaseOperation; import org.junit.After; @@ -38,6 +43,13 @@ public abstract class JdbcTestCase { protected abstract IDataSet getDataSet() throws Exception; + protected IDataSet getDataSet(String xmlname) throws DataSetException { + InputStream res = getClass().getClassLoader().getResourceAsStream(xmlname); + FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder(); + builder.setColumnSensing(true); + return builder.build(res); + } + protected JDBCConnectionManager getJdbcConnectionManager() { return jdbcConnectionManager; } @@ -105,6 +117,16 @@ public abstract class JdbcTestCase { config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); } + protected void compareWith(String xmlname, String[] tables) throws Exception { + InputStream res = getClass().getClassLoader().getResourceAsStream(xmlname); + IDataSet actual = getConnection().createDataSet(); + IDataSet expected = new FlatXmlDataSetBuilder().build(res); + + for (String table : tables) { + assertEquals(actual.getTable(table), expected.getTable(table)); + } + } + @Before public void setUp() throws Exception { IDataSet dataSet = getDataSet(); @@ -113,7 +135,7 @@ public abstract class JdbcTestCase { getOperationListener().connectionRetrieved(getConnection()); dbTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT); - dbTester.setTearDownOperation(DatabaseOperation.NONE); + dbTester.setTearDownOperation(DatabaseOperation.REFRESH); dbTester.setDataSet(dataSet); dbTester.setOperationListener(getOperationListener()); dbTester.onSetup(); -- cgit v1.2.3-70-g09d2 From 9ca5b384b4143529a3c9bc80bff39dab635aee1c Mon Sep 17 00:00:00 2001 From: Tharre Date: Sat, 12 May 2018 00:00:59 +0200 Subject: Implement requestVehicles() in service+DAO #25953 --- .../einsatzverwaltung/dao/DBOperationDAO.java | 46 +++++- .../service/OperationServiceImpl.java | 79 +++++++++- .../einsatzverwaltung/dao/OperationDAOTest.java | 81 ++++++++++ .../service/OperationServiceComponentTest.java | 16 +- .../service/OperationServiceTest.java | 175 +++++++++++++++++++++ .../service/OperationServiceUnitTest.java | 5 +- src/test/resources/operationDAOUpdateNormal.xml | 19 +++ .../resources/operationDAOUpdateRemoveVehicles.xml | 17 ++ src/test/resources/operationDAOUpdateSetup.xml | 17 ++ 9 files changed, 447 insertions(+), 8 deletions(-) create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java create mode 100644 src/test/resources/operationDAOUpdateNormal.xml create mode 100644 src/test/resources/operationDAOUpdateRemoveVehicles.xml create mode 100644 src/test/resources/operationDAOUpdateSetup.xml (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java index 476f968..68185d6 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java @@ -2,9 +2,11 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -112,7 +114,49 @@ public class DBOperationDAO implements OperationDAO { } @Override - public void update(Operation operation) throws ElementNotFoundException, PersistenceException {} + public void update(Operation o) throws ElementNotFoundException, PersistenceException { + String sql = + "UPDATE Operation SET opCode = ?, severity = ?, destination = ?," + + " additionalInfo = ?, status = ? WHERE id = ?"; + String sql2 = "DELETE FROM VehicleOperation WHERE operationId = ?"; + String sql3 = "INSERT INTO VehicleOperation(vehicleId, operationId) VALUES (?, ?)"; + + try { + Connection con = jdbcConnectionManager.getConnection(); + con.setAutoCommit(false); + try (PreparedStatement pstmt = con.prepareStatement(sql)) { + pstmt.setString(1, o.opCode()); + pstmt.setInt(2, o.severity().ordinal()); + pstmt.setString(3, o.destination()); + pstmt.setString(4, o.additionalInfo()); + pstmt.setInt(5, o.status().ordinal()); + pstmt.setLong(6, o.id()); + + if (pstmt.executeUpdate() != 1) + throw new ElementNotFoundException("No such operationId exists: " + pstmt); + } + + try (PreparedStatement pstmt = con.prepareStatement(sql2)) { + pstmt.setLong(1, o.id()); + pstmt.executeUpdate(); + } + + try (PreparedStatement pstmt = con.prepareStatement(sql3)) { + pstmt.setLong(2, o.id()); + + for (long id : (Iterable) o.vehicles().stream().map(Vehicle::id)::iterator) { + pstmt.setLong(1, id); + pstmt.addBatch(); + } + + pstmt.executeBatch(); + } + con.commit(); + con.setAutoCommit(true); + } catch (SQLException e) { + throw new PersistenceException(e); + } + } @Override public Operation get(long operationId) throws ElementNotFoundException, PersistenceException { diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java index a6be111..ba4eb7f 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java @@ -1,17 +1,23 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import java.time.Instant; import java.util.EnumSet; +import java.util.HashSet; import java.util.Set; import java.util.SortedSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.springframework.stereotype.Service; @Service @@ -20,8 +26,11 @@ public class OperationServiceImpl implements OperationService { // TODO: anders? private OperationDAO operationDAO; - public OperationServiceImpl(OperationDAO dao) { - this.operationDAO = dao; + private final VehicleDAO vehicleDAO; + + public OperationServiceImpl(OperationDAO operationDAO, VehicleDAO vehicleDAO) { + this.operationDAO = operationDAO; + this.vehicleDAO = vehicleDAO; } @Override @@ -114,7 +123,71 @@ public class OperationServiceImpl implements OperationService { @Override public void requestVehicles(long operationId, Set vehicleIds) - throws InvalidOperationException, InvalidVehicleException, ServiceException {} + throws InvalidOperationException, InvalidVehicleException, ServiceException { + Set vs = new HashSet<>(); + + try { + if (operationId <= 0) throw new InvalidOperationException("OperationId is invalid"); + Operation o = operationDAO.get(operationId); + validateOperation(o); + + if (o.status() != Status.ACTIVE) + throw new InvalidOperationException( + "Can't request vehicles for a nonactive operation"); + + if (!o.status().equals(Status.ACTIVE)) + throw new InvalidOperationException("Can't add vehicles to a nonactive operation"); + + for (Long id : vehicleIds) { + if (id <= 0) throw new InvalidVehicleException("VehicleId is invalid"); + + try { + Vehicle v = vehicleDAO.get(id); + if (v.status() == Vehicle.Status.ABGEMELDET) + throw new InvalidVehicleException("Can't request nonactive vehicles"); + + vs.add(v); + } catch (ElementNotFoundException e) { + throw new InvalidVehicleException("VehicleId does not exist"); + } + } + + vs.addAll(o.vehicles()); + if (vs.equals(o.vehicles())) return; + + operationDAO.update(o.toBuilder().vehicles(vs).build()); + } catch (ElementNotFoundException e) { + throw new InvalidOperationException("No such operationId exists"); + } catch (PersistenceException e) { + throw new ServiceException(e); + } + } + + private static final Pattern opCodePattern = Pattern.compile("(?:\\w{1,3}-\\d{0,2})(.)(?:.*)"); + + private void validateOperation(Operation o) throws InvalidOperationException { + if (o.id() <= 0) throw new InvalidOperationException("Id is invalid"); + + if (o.opCode().trim().isEmpty()) throw new InvalidOperationException("opCode is invalid"); + + Matcher m = opCodePattern.matcher(o.opCode()); + if (!m.matches()) throw new InvalidOperationException("opCode is invalid"); + + if (!m.group(1).equals(o.severity().toString())) + throw new InvalidOperationException("Severity is invalid"); + + if (o.vehicles().isEmpty()) + throw new InvalidOperationException("No vehicles assigned to operation"); + + Instant created = o.created(); + if (created == null) throw new InvalidOperationException("Created can't be empty"); + + if (created.isAfter(Instant.now())) + throw new InvalidOperationException("Vehicle was created in the future"); + + if (o.destination().trim().isEmpty()) + throw new InvalidOperationException("Destination can't be empty"); + } @Override public void complete(long operationId, Status status) diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java new file mode 100644 index 0000000..726735d --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java @@ -0,0 +1,81 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; +import java.time.Instant; +import java.util.Collections; +import java.util.Set; +import org.dbunit.dataset.DataSetException; +import org.dbunit.dataset.IDataSet; +import org.junit.Test; + +public class OperationDAOTest extends JdbcTestCase { + + private static final String[] COMPARE_TABLES = + new String[] {"VehicleOperation", "Operation", "Vehicle", "VehicleVersion"}; + + private OperationDAO operationDAO; + + private final Operation o; + + public OperationDAOTest() { + this.operationDAO = new DBOperationDAO(getJdbcConnectionManager()); + + Vehicle v1 = + Vehicle.builder() + .id(1) + .name("RTW-1") + .constructionType(Vehicle.ConstructionType.HOCHDACH) + .type(Vehicle.VehicleType.RTW) + .status(Vehicle.Status.FREI_FUNK) + .hasNef(true) + .build(); + + Vehicle v2 = v1.toBuilder().id(2).build(); + Vehicle v3 = v1.toBuilder().id(3).build(); + + o = + Operation.builder() + .id(1) + .opCode("RD-2B0M") + .severity(Severity.B) + .status(Status.ACTIVE) + .vehicles(Set.of(v1, v2, v3)) + .created(Instant.now()) + .destination("New description") + .additionalInfo("Test") + .build(); + } + + @Override + protected IDataSet getDataSet() throws DataSetException { + return getDataSet("operationDAOUpdateSetup.xml"); + } + + @Test + public void testUpdateNormal() throws Exception { + operationDAO.update(o); + + compareWith("operationDAOUpdateNormal.xml", COMPARE_TABLES); + } + + @Test(expected = ElementNotFoundException.class) + public void testUpdateMissing() throws Exception { + Operation op = o.toBuilder().id(73).build(); + + operationDAO.update(op); + } + + @Test + public void testUpdateRemoveVehicles() throws Exception { + Operation op = o.toBuilder().vehicles(Collections.emptySet()).build(); + + operationDAO.update(op); + + compareWith("operationDAOUpdateRemoveVehicles.xml", COMPARE_TABLES); + } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java index 8e13d0e..9754b2d 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java @@ -5,6 +5,7 @@ import static org.hamcrest.CoreMatchers.is; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.DBOperationDAO; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDatabaseDao; 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; @@ -21,9 +22,18 @@ import org.junit.Test; public class OperationServiceComponentTest { - private final OperationDAO operationDAO = - new DBOperationDAO(new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")); - private final OperationService operationService = new OperationServiceImpl(operationDAO); + // TODO: dependency injection + + private final JDBCConnectionManager jdbcConnectionManager = + new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"); + + private final OperationDAO operationDAO = new DBOperationDAO(jdbcConnectionManager); + + private final VehicleDatabaseDao vehicleDatabaseDao = + new VehicleDatabaseDao(jdbcConnectionManager); + + private final OperationService operationService = + new OperationServiceImpl(operationDAO, vehicleDatabaseDao); /*@Test public void testaddOperationTest() { diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java new file mode 100644 index 0000000..70185d3 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceTest.java @@ -0,0 +1,175 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; + +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import java.time.Instant; +import java.util.Collections; +import java.util.Set; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class OperationServiceTest { + + @Mock private OperationDAO operationDAO; + + @Mock private VehicleDAO vehicleDAO; + + @InjectMocks private OperationServiceImpl operationService; + + private Set vehicles; + private Vehicle v1, v2, v3, v4, v5; + + @Before + public void setUp() throws ElementNotFoundException, PersistenceException { + v1 = + Vehicle.builder() + .id(1) + .name("RTW-1") + .constructionType(Vehicle.ConstructionType.HOCHDACH) + .type(Vehicle.VehicleType.RTW) + .status(Vehicle.Status.FREI_FUNK) + .hasNef(true) + .build(); + + v2 = + Vehicle.builder() + .id(2) + .name("KTW-1") + .constructionType(Vehicle.ConstructionType.HOCHDACH) + .type(Vehicle.VehicleType.KTW) + .status(Vehicle.Status.FREI_WACHE) + .hasNef(true) + .build(); + + v3 = + Vehicle.builder() + .id(3) + .name("KTW-2") + .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH) + .type(Vehicle.VehicleType.KTW_B) + .status(Vehicle.Status.FREI_FUNK) + .hasNef(false) + .build(); + + v4 = + Vehicle.builder() + .id(4) + .name("BKTW-2") + .constructionType(Vehicle.ConstructionType.HOCHDACH) + .type(Vehicle.VehicleType.BKTW) + .status(Vehicle.Status.FREI_FUNK) + .hasNef(false) + .build(); + + v5 = + Vehicle.builder() + .id(5) + .name("NEF-1") + .constructionType(Vehicle.ConstructionType.NORMAL) + .type(Vehicle.VehicleType.NEF) + .status(Vehicle.Status.FREI_WACHE) + .hasNef(true) + .build(); + + Vehicle v6 = + Vehicle.builder() + .id(6) + .name("NAH-1") + .constructionType(Vehicle.ConstructionType.MITTELHOCHDACH) + .type(Vehicle.VehicleType.NAH) + .status(Vehicle.Status.ABGEMELDET) + .hasNef(true) + .build(); + + vehicles = Set.of(v1, v2, v3, v4, v5, v6); + + Operation o = + Operation.builder() + .id(1) + .opCode("ALP-95E7") + .severity(Severity.E) + .status(Status.ACTIVE) + .vehicles(Collections.singleton(v1)) + .created(Instant.now()) + .destination("Wiedner Hauptstraße 35, Wien") + .build(); + + Operation o2 = o.toBuilder().status(Status.CANCELLED).build(); + + when(operationDAO.get(anyLong())) + .thenAnswer( + ans -> { + long arg = ans.getArgument(0); + if (arg == 1L) return o; + else if (arg == 5L) return o2; + else throw new ElementNotFoundException(""); + }); + + when(vehicleDAO.get(anyLong())) + .thenAnswer( + ans -> { + int arg = ((Long) ans.getArgument(0)).intValue(); + return vehicles.stream() + .filter(v -> v.id() == arg) + .findFirst() + .orElseThrow(() -> new ElementNotFoundException("")); + }); + } + + @Test + public void requestNormal() throws Exception { + Set vehicleIds = Set.of(2L, 3L, 4L, 5L); + operationService.requestVehicles(1, vehicleIds); + + Operation result = + operationDAO.get(1).toBuilder().vehicles(Set.of(v1, v2, v3, v4, v5)).build(); + verify(operationDAO, times(1)).update(result); + verify(operationDAO, times(0)).get(6L); + } + + @Test + public void requestExistingVehicle() throws Exception { + operationService.requestVehicles(1, Set.of(1L)); + + Operation result = operationDAO.get(1); + verify(operationDAO, times(0)).update(result); + } + + @Test(expected = InvalidVehicleException.class) + public void requestInvalidVehicle() throws Exception { + operationService.requestVehicles(1, Set.of(5L, 6L)); + } + + @Test(expected = InvalidOperationException.class) + public void requestInvalidOperation() throws Exception { + operationService.requestVehicles(2, Set.of(1L)); + } + + @Test(expected = InvalidVehicleException.class) + public void requestInactiveVehicle() throws Exception { + operationService.requestVehicles(1, Set.of(6L)); + } + + @Test(expected = InvalidOperationException.class) + public void requestInactiveOperation() throws Exception { + operationService.requestVehicles(5, Set.of(1L)); + } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java index 29a840b..7b574a1 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceUnitTest.java @@ -7,6 +7,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; @@ -23,7 +24,9 @@ import org.junit.Test; public class OperationServiceUnitTest { private final OperationDAO operationDAO = mock(OperationDAO.class); - private final OperationService operationService = new OperationServiceImpl(operationDAO); + private final VehicleDAO vehicleDAO = mock(VehicleDAO.class); + private final OperationService operationService = + new OperationServiceImpl(operationDAO, vehicleDAO); @Test public void addOperationTest() { diff --git a/src/test/resources/operationDAOUpdateNormal.xml b/src/test/resources/operationDAOUpdateNormal.xml new file mode 100644 index 0000000..025cdc2 --- /dev/null +++ b/src/test/resources/operationDAOUpdateNormal.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/operationDAOUpdateRemoveVehicles.xml b/src/test/resources/operationDAOUpdateRemoveVehicles.xml new file mode 100644 index 0000000..6f171b4 --- /dev/null +++ b/src/test/resources/operationDAOUpdateRemoveVehicles.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/test/resources/operationDAOUpdateSetup.xml b/src/test/resources/operationDAOUpdateSetup.xml new file mode 100644 index 0000000..23d1a25 --- /dev/null +++ b/src/test/resources/operationDAOUpdateSetup.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + -- cgit v1.2.3-70-g09d2 From 5ec0ae4becd78932d7d1c520a8dda53223c65404 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Mon, 21 May 2018 12:13:40 +0200 Subject: Add helper methods for DBUnit TestCases [#25949] --- .../sepm/assignment/groupphase/util/Helper.java | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java index b808206..618b06f 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java @@ -6,6 +6,12 @@ import java.util.List; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.Window; +import org.dbunit.database.IDatabaseConnection; +import org.dbunit.dataset.DataSetException; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; +import org.dbunit.dataset.filter.DefaultColumnFilter; +import org.dbunit.util.fileloader.FlatXmlDataFileLoader; import org.testfx.api.FxRobotContext; public class Helper { @@ -25,4 +31,39 @@ public class Helper { .findFirst() .orElse(null); } + + public static ITable getActualFilteredTableData( + IDatabaseConnection connection, String tableName, String[] excludedColumns) + throws Exception { + IDataSet actualDataSet = connection.createDataSet(); + ITable actualTable = actualDataSet.getTable(tableName); + return getFilteredTableData(actualTable, excludedColumns); + } + + public static ITable getExpectedFilteredTableData( + String tableName, String[] excludedColumns, String expectedXmlDataFileName) + throws Exception { + IDataSet dataSet = loadDataSet(expectedXmlDataFileName); + ITable table = dataSet.getTable(tableName); + return getFilteredTableData(table, excludedColumns); + } + + public static ITable getActualFilteredQueryTableData( + IDatabaseConnection connection, + String resultTableName, + String sql, + String[] excludedColumns) + throws Exception { + ITable queryData = connection.createQueryTable(resultTableName, sql); + return getFilteredTableData(queryData, excludedColumns); + } + + private static ITable getFilteredTableData(ITable tableData, String[] excludedColumns) + throws DataSetException { + return DefaultColumnFilter.excludedColumnsTable(tableData, excludedColumns); + } + + private static IDataSet loadDataSet(String fileName) { + return new FlatXmlDataFileLoader().load("/" + fileName); + } } -- cgit v1.2.3-70-g09d2 From ea8477a9699c6065d17ef3b410be8e3c84ddf9c2 Mon Sep 17 00:00:00 2001 From: Martin Weick Date: Sat, 12 May 2018 10:34:29 +0200 Subject: Implement Persistence Test Vehicle --- .../groupphase/vehicle/VehiclePersistenceTest.java | 122 +++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') 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..e37259b --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java @@ -0,0 +1,122 @@ +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.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import java.io.InputStream; +import java.sql.Types; +import java.util.List; +import org.dbunit.DBTestCase; +import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.database.DatabaseConfig; +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.junit.Assert; + +public class VehiclePersistenceTest extends DBTestCase { + + private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); + private static final String JDBC_URL = + "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; + + private VehicleDAO vehicleDAO; + + public VehiclePersistenceTest() throws PersistenceException { + vehicleDAO = new VehicleDatabaseDao(new JDBCConnectionManager(JDBC_URL)); + + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + } + + @Override + protected IDataSet getDataSet() throws Exception { + InputStream res = getClass().getClassLoader().getResourceAsStream("vehicleTestData.xml"); + return new FlatXmlDataSetBuilder().build(res); + } + + @Override + protected void setUpDatabaseConfig(DatabaseConfig config) { + PostgresqlDataTypeFactory factory = + new PostgresqlDataTypeFactory() { + @Override + public boolean isEnumType(String sqlTypeName) { + if (sqlTypeName.equalsIgnoreCase("enum")) return true; + + return super.isEnumType(sqlTypeName); + } + + @Override + public DataType createDataType(int sqlType, String sqlTypeName) + throws DataTypeException { + if (isEnumType(sqlTypeName)) { + sqlType = Types.VARCHAR; + } + + return super.createDataType(sqlType, sqlTypeName); + } + }; + + config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); + } + + public void testListVehicle() throws PersistenceException { + List 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()); + } + + public void testVehicleListNoElement() throws PersistenceException { + List 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)); + } +} -- cgit v1.2.3-70-g09d2 From 97de5781b614f5ab3e515f8a63421aae79cf4aa9 Mon Sep 17 00:00:00 2001 From: Martin Weick Date: Mon, 21 May 2018 21:10:07 +0200 Subject: Implement Vehicle Update Tests Persistence #25948 --- .../groupphase/vehicle/VehiclePersistenceTest.java | 95 ++++++++++++++-------- 1 file changed, 62 insertions(+), 33 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') 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 index e37259b..32053a8 100644 --- 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 @@ -7,34 +7,43 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Con 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.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.Helper; import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.io.InputStream; import java.sql.Types; import java.util.List; +import org.dbunit.Assertion; import org.dbunit.DBTestCase; import org.dbunit.PropertiesBasedJdbcDatabaseTester; import org.dbunit.database.DatabaseConfig; import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; 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.util.fileloader.FlatXmlDataFileLoader; +import org.junit.After; import org.junit.Assert; +import org.junit.Test; -public class VehiclePersistenceTest extends DBTestCase { - - private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); - private static final String JDBC_URL = - "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; +public class VehiclePersistenceTest extends JdbcTestCase { private VehicleDAO vehicleDAO; - public VehiclePersistenceTest() throws PersistenceException { - vehicleDAO = new VehicleDatabaseDao(new JDBCConnectionManager(JDBC_URL)); + private Vehicle validUpdateVehicle = Vehicle.builder() + .hasNef(true) + .constructionType(ConstructionType.HOCHDACH) + .type(VehicleType.RTW) + .id(4) + .name("RTW-4") + .status(Status.ABGEMELDET) + .build(); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); - } + public VehiclePersistenceTest(){ + vehicleDAO = new VehicleDatabaseDao(getJdbcConnectionManager()); + } @Override protected IDataSet getDataSet() throws Exception { @@ -42,31 +51,13 @@ public class VehiclePersistenceTest extends DBTestCase { return new FlatXmlDataSetBuilder().build(res); } - @Override - protected void setUpDatabaseConfig(DatabaseConfig config) { - PostgresqlDataTypeFactory factory = - new PostgresqlDataTypeFactory() { - @Override - public boolean isEnumType(String sqlTypeName) { - if (sqlTypeName.equalsIgnoreCase("enum")) return true; - - return super.isEnumType(sqlTypeName); - } - - @Override - public DataType createDataType(int sqlType, String sqlTypeName) - throws DataTypeException { - if (isEnumType(sqlTypeName)) { - sqlType = Types.VARCHAR; - } - - return super.createDataType(sqlType, sqlTypeName); - } - }; - - config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); + @After + public void tearDownOperation() throws Exception { + // needed in order to completely reset DB, including resetting auto_increment sequences + getJdbcConnectionManager().getConnection().prepareStatement("DROP ALL OBJECTS").execute(); } + @Test public void testListVehicle() throws PersistenceException { List vehicles = vehicleDAO.list(); @@ -104,6 +95,7 @@ public class VehiclePersistenceTest extends DBTestCase { Assert.assertEquals(3, vehicles.size()); } + @Test public void testVehicleListNoElement() throws PersistenceException { List vehicles = vehicleDAO.list(); @@ -119,4 +111,41 @@ public class VehiclePersistenceTest extends DBTestCase { 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); + } } -- cgit v1.2.3-70-g09d2 From c5eff512cc2cdb7204e31d8fb992a9bffbfbd807 Mon Sep 17 00:00:00 2001 From: Martin Weick Date: Tue, 22 May 2018 11:09:50 +0200 Subject: expand Vehicle Update Persistence Tests #25948 --- .../groupphase/vehicle/VehiclePersistenceTest.java | 61 +++++++++++++--------- 1 file changed, 35 insertions(+), 26 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') 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 index 32053a8..2d92818 100644 --- 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 @@ -6,24 +6,16 @@ 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.JDBCConnectionManager; import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.io.InputStream; -import java.sql.Types; import java.util.List; import org.dbunit.Assertion; -import org.dbunit.DBTestCase; -import org.dbunit.PropertiesBasedJdbcDatabaseTester; -import org.dbunit.database.DatabaseConfig; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; -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.util.fileloader.FlatXmlDataFileLoader; import org.junit.After; import org.junit.Assert; import org.junit.Test; @@ -32,18 +24,19 @@ public class VehiclePersistenceTest extends JdbcTestCase { private VehicleDAO vehicleDAO; - private Vehicle validUpdateVehicle = Vehicle.builder() - .hasNef(true) - .constructionType(ConstructionType.HOCHDACH) - .type(VehicleType.RTW) - .id(4) - .name("RTW-4") - .status(Status.ABGEMELDET) - .build(); - - public VehiclePersistenceTest(){ + 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 { @@ -113,15 +106,15 @@ public class VehiclePersistenceTest extends JdbcTestCase { } @Test - public void testUpdateValid_VehicleVersion()throws Exception{ + public void testUpdateValid_VehicleVersion() throws Exception { vehicleDAO.update(validUpdateVehicle); - String[] excludedColumnsVehicleVersion = new String[]{"ID", "NAME"}; + String[] excludedColumnsVehicleVersion = new String[] {"ID", "NAME"}; String tableVehicleVersion = "VEHICLEVERSION"; ITable actualTableData = Helper.getActualFilteredTableData( - getConnection(),tableVehicleVersion,excludedColumnsVehicleVersion); + getConnection(), tableVehicleVersion, excludedColumnsVehicleVersion); ITable expectedTableData = Helper.getExpectedFilteredTableData( @@ -130,16 +123,17 @@ public class VehiclePersistenceTest extends JdbcTestCase { "vehicleTestUpdateExpectedData.xml"); Assertion.assertEquals(expectedTableData, actualTableData); } + @Test - public void testUpdateValid_Vehicle()throws Exception{ + public void testUpdateValid_Vehicle() throws Exception { vehicleDAO.update(validUpdateVehicle); - String[] excludedColumnsVehicleVersion = new String[]{"VERSION","STATUS"}; + String[] excludedColumnsVehicleVersion = new String[] {"VERSION", "STATUS"}; String tableVehicleVersion = "VEHICLE"; ITable actualTableData = Helper.getActualFilteredTableData( - getConnection(),tableVehicleVersion,excludedColumnsVehicleVersion); + getConnection(), tableVehicleVersion, excludedColumnsVehicleVersion); ITable expectedTableData = Helper.getExpectedFilteredTableData( @@ -148,4 +142,19 @@ public class VehiclePersistenceTest extends JdbcTestCase { "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); + } } -- cgit v1.2.3-70-g09d2 From 16e8d50e0c320f3028d0e1324d15c9cb9ce33085 Mon Sep 17 00:00:00 2001 From: Tharre Date: Tue, 22 May 2018 14:58:41 +0200 Subject: Fix merge conflicts caused by interface change --- .../einsatzverwaltung/controller/CreateCarController.java | 4 ++-- .../groupphase/vehicle/VehiclePersistenceTest.java | 13 +++---------- 2 files changed, 5 insertions(+), 12 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java index f640807..e88e640 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java @@ -9,7 +9,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.lang.invoke.MethodHandles; import java.util.EnumSet; -import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; import javafx.collections.FXCollections; @@ -162,7 +162,7 @@ public class CreateCarController { } private void vehicleListFP() { - List vehicleList = null; + Set vehicleList = null; fp_vehicleList.getChildren().clear(); try { vehicleList = vehicleService.list(EnumSet.range(Status.ABGEMELDET, Status.FREI_FUNK)); 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 index 2d92818..81ebf63 100644 --- 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 @@ -11,12 +11,11 @@ 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.List; +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.After; import org.junit.Assert; import org.junit.Test; @@ -44,15 +43,9 @@ public class VehiclePersistenceTest extends JdbcTestCase { return new FlatXmlDataSetBuilder().build(res); } - @After - public void tearDownOperation() throws Exception { - // needed in order to completely reset DB, including resetting auto_increment sequences - getJdbcConnectionManager().getConnection().prepareStatement("DROP ALL OBJECTS").execute(); - } - @Test public void testListVehicle() throws PersistenceException { - List vehicles = vehicleDAO.list(); + Set vehicles = vehicleDAO.list(); Vehicle v1 = Vehicle.builder() @@ -90,7 +83,7 @@ public class VehiclePersistenceTest extends JdbcTestCase { @Test public void testVehicleListNoElement() throws PersistenceException { - List vehicles = vehicleDAO.list(); + Set vehicles = vehicleDAO.list(); Vehicle v1 = Vehicle.builder() -- cgit v1.2.3-70-g09d2 From 6cbba5f1fa7250ecd62961e898f4bea970bef366 Mon Sep 17 00:00:00 2001 From: Tharre Date: Tue, 22 May 2018 17:00:49 +0200 Subject: Remove OperationServiceComponentTest for now It causes way to many conflicts and is poorly designed. --- .../service/OperationServiceComponentTest.java | 160 --------------------- 1 file changed, 160 deletions(-) delete mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java deleted file mode 100644 index 9754b2d..0000000 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceComponentTest.java +++ /dev/null @@ -1,160 +0,0 @@ -package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; - -import static junit.framework.TestCase.fail; -import static org.hamcrest.CoreMatchers.is; - -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.DBOperationDAO; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDatabaseDao; -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.InvalidOperationException; -import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; -import java.time.Instant; -import java.util.Set; -import org.junit.Assert; -import org.junit.Test; - -public class OperationServiceComponentTest { - - // TODO: dependency injection - - private final JDBCConnectionManager jdbcConnectionManager = - new JDBCConnectionManager("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"); - - private final OperationDAO operationDAO = new DBOperationDAO(jdbcConnectionManager); - - private final VehicleDatabaseDao vehicleDatabaseDao = - new VehicleDatabaseDao(jdbcConnectionManager); - - private final OperationService operationService = - new OperationServiceImpl(operationDAO, vehicleDatabaseDao); - - /*@Test - public void testaddOperationTest() { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of(vehicle)) - .build(); - try { - // TODO: OPERATION DOES NOT WORK - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (InvalidOperationException | ServiceException e) { - e.printStackTrace(); - fail(); - } - }*/ - - @Test(expected = InvalidOperationException.class) - public void testaddFaultyOperationTest() throws InvalidOperationException { - Vehicle vehicle = - Vehicle.builder() - .status(Vehicle.Status.FREI_FUNK) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - Vehicle vehicle1 = - Vehicle.builder() - .status(Vehicle.Status.ABGEMELDET) - .constructionType(ConstructionType.HOCHDACH) - .name("BKTW_123") - .hasNef(true) - .type(VehicleType.BKTW) - .build(); - - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of(vehicle, vehicle1)) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - fail(); - } - } - - @Test(expected = InvalidOperationException.class) - public void testaddFaultyOperation2Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("Wiedner Hauptstraße 35, Wien") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } - - @Test(expected = InvalidOperationException.class) - public void testaddFaultyOperation3Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("ALP-95E7") - .created(Instant.now()) - .destination("") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } - - @Test(expected = InvalidOperationException.class) - public void testaddFaultyOperation4Test() throws InvalidOperationException { - Operation operation = - Operation.builder() - .status(Status.ACTIVE) - .opCode("") - .created(Instant.now()) - .destination("Römergasse 7, 2500 Baden") - .additionalInfo("HTU Wien") - .severity(Severity.B) - .vehicles(Set.of()) - .build(); - try { - Assert.assertThat(operationService.add(operation), is(1L)); - } catch (ServiceException e) { - e.printStackTrace(); - } - } -} -- cgit v1.2.3-70-g09d2 From 69901593ea681a0ddcd4dd472155dea0daab4ca4 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Sat, 19 May 2018 12:18:48 +0200 Subject: Add unit-test testAddValidEmployee [#25949] --- .../dao/EmployeePersistenceTest.java | 66 ++++++++++++++++++++++ .../resources/testAddValidEmployee_expected.xml | 16 ++++++ 2 files changed, 82 insertions(+) create mode 100644 src/test/resources/testAddValidEmployee_expected.xml (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index 8633b9d..52a87eb 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -7,9 +7,13 @@ import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.io.InputStream; import java.time.LocalDate; import java.util.Set; +import org.dbunit.Assertion; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; +import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.util.fileloader.FlatXmlDataFileLoader; import org.junit.Assert; public class EmployeePersistenceTest extends JdbcTestCase { @@ -82,4 +86,66 @@ public class EmployeePersistenceTest extends JdbcTestCase { Assert.assertFalse(employees.contains(empOne)); } + + /** + * This test checks if rows in both table EmployeeVersion and Employee are created, without + * checking the referential integrity constraint. + * + * @throws Exception + */ + public void testAddValidEmployee() throws Exception { + + Employee employee = + Employee.builder() + .id(4) + .name("Testperson") + .birthday(LocalDate.parse("2010-11-11")) + .educationLevel(EducationLevel.NA) + .isDriver(true) + .isPilot(false) + .build(); + + employeePersistence.add(employee); + + String[] excludedColumnsEmployeeVersion = new String[] {"ID"}; + String[] excludedColumnsEmployee = new String[] {"VERSION"}; + String tableEmployeeVersion = "EMPLOYEEVERSION"; + String tableEmployee = "EMPLOYEE"; + + // load actual and expected data set + IDataSet actualDataSet = getConnection().createDataSet(); + IDataSet expectedDataSet = + new FlatXmlDataFileLoader().load("/testAddValidEmployee_expected.xml"); + + // extract employeeVersion table + ITable actualEmployeeVersionTable = actualDataSet.getTable(tableEmployeeVersion); + ITable expectedEmployeeVersionTable = expectedDataSet.getTable(tableEmployeeVersion); + + // exclude 'id' column as it is an autogenerated value + ITable actualFilteredTable = + DefaultColumnFilter.excludedColumnsTable( + actualEmployeeVersionTable, excludedColumnsEmployeeVersion); + ITable expectedFilteredTable = + DefaultColumnFilter.excludedColumnsTable( + expectedEmployeeVersionTable, excludedColumnsEmployeeVersion); + + // extract employee table + ITable actualEmployeeTable = actualDataSet.getTable(tableEmployee); + ITable expectedEmployeeTable = expectedDataSet.getTable(tableEmployee); + + // exclude 'version' as it is an autogenerated value + ITable actualFilteredEmpTable = + DefaultColumnFilter.excludedColumnsTable( + actualEmployeeTable, excludedColumnsEmployee); + ITable expectedFilteredEmpTable = + DefaultColumnFilter.excludedColumnsTable( + expectedEmployeeTable, excludedColumnsEmployee); + + Assertion.assertEquals(expectedFilteredTable, actualFilteredTable); + Assertion.assertEquals(expectedFilteredEmpTable, actualFilteredEmpTable); + } + + public void testUpdateValidEmployee() throws PersistenceException {} + + public void testUpdateNonExistingEmployee() throws PersistenceException {} } diff --git a/src/test/resources/testAddValidEmployee_expected.xml b/src/test/resources/testAddValidEmployee_expected.xml new file mode 100644 index 0000000..41ecf4e --- /dev/null +++ b/src/test/resources/testAddValidEmployee_expected.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 3f96ee012092a8a403c6b3ed91d8e72fdbcbb977 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Sat, 19 May 2018 14:36:27 +0200 Subject: Add further DBUnit-Tests for employee.add [#25963] --- .../dao/EmployeePersistenceTest.java | 88 ++++++++++++++++------ 1 file changed, 67 insertions(+), 21 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index 52a87eb..6bfd898 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -13,6 +13,7 @@ import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.operation.DatabaseOperation; import org.dbunit.util.fileloader.FlatXmlDataFileLoader; import org.junit.Assert; @@ -27,10 +28,22 @@ public class EmployeePersistenceTest extends JdbcTestCase { @Override protected IDataSet getDataSet() throws DataSetException { InputStream res = - getClass().getClassLoader().getResourceAsStream("employeeServiceTestData.xml"); + getClass() + .getClassLoader() + .getResourceAsStream("EmployeePersistenceTestBaseData.xml"); return new FlatXmlDataSetBuilder().build(res); } + protected DatabaseOperation getSetUpOperation() throws Exception { + return DatabaseOperation.CLEAN_INSERT; + } + + protected DatabaseOperation getTearDownOperation() throws Exception { + // needed in order to completely reset DB, including resetting auto_increment sequences + jdbcConnectionManager.getConnection().prepareStatement("DROP ALL OBJECTS").execute(); + return DatabaseOperation.DELETE_ALL; + } + public void testListEmployees() throws PersistenceException { Set employees = employeePersistence.list(); @@ -87,30 +100,21 @@ public class EmployeePersistenceTest extends JdbcTestCase { Assert.assertFalse(employees.contains(empOne)); } - /** - * This test checks if rows in both table EmployeeVersion and Employee are created, without - * checking the referential integrity constraint. - * - * @throws Exception - */ - public void testAddValidEmployee() throws Exception { + Employee validEmployee = + Employee.builder() + .name("Testperson") + .birthday(LocalDate.parse("2010-11-11")) + .educationLevel(EducationLevel.NA) + .isDriver(true) + .isPilot(false) + .build(); - Employee employee = - Employee.builder() - .id(4) - .name("Testperson") - .birthday(LocalDate.parse("2010-11-11")) - .educationLevel(EducationLevel.NA) - .isDriver(true) - .isPilot(false) - .build(); + public void testAddValidEmployee_EmployeeVersion() throws Exception { - employeePersistence.add(employee); + employeePersistence.add(validEmployee); String[] excludedColumnsEmployeeVersion = new String[] {"ID"}; - String[] excludedColumnsEmployee = new String[] {"VERSION"}; String tableEmployeeVersion = "EMPLOYEEVERSION"; - String tableEmployee = "EMPLOYEE"; // load actual and expected data set IDataSet actualDataSet = getConnection().createDataSet(); @@ -129,6 +133,21 @@ public class EmployeePersistenceTest extends JdbcTestCase { DefaultColumnFilter.excludedColumnsTable( expectedEmployeeVersionTable, excludedColumnsEmployeeVersion); + Assertion.assertEquals(expectedFilteredTable, actualFilteredTable); + } + + public void testAddValidEmployee_Employee() throws Exception { + + employeePersistence.add(validEmployee); + + String[] excludedColumnsEmployee = new String[] {"VERSION"}; + String tableEmployee = "EMPLOYEE"; + + // load actual and expected data set + IDataSet actualDataSet = getConnection().createDataSet(); + IDataSet expectedDataSet = + new FlatXmlDataFileLoader().load("/testAddValidEmployee_expected.xml"); + // extract employee table ITable actualEmployeeTable = actualDataSet.getTable(tableEmployee); ITable expectedEmployeeTable = expectedDataSet.getTable(tableEmployee); @@ -141,10 +160,37 @@ public class EmployeePersistenceTest extends JdbcTestCase { DefaultColumnFilter.excludedColumnsTable( expectedEmployeeTable, excludedColumnsEmployee); - Assertion.assertEquals(expectedFilteredTable, actualFilteredTable); Assertion.assertEquals(expectedFilteredEmpTable, actualFilteredEmpTable); } + public void testAddValidEmployee_Join() throws Exception { + + employeePersistence.add(validEmployee); + + String[] excludedColumns = new String[] {"E_VERSION", "V_ID"}; + String table = "EMP_JOIN"; + + String sqlJoinEmployeeVersion = + "SELECT e.id AS E_ID, v.name AS V_NAME, v.birthday AS V_BIRTHDAY, " + + "v.educationLevel as V_EDUCATIONLEVEL, " + + "v.isDriver AS V_ISDRIVER, v.isPilot AS V_ISPILOT " + + "FROM Employee e " + + "JOIN EmployeeVersion v ON e.version = v.id"; + + ITable actualJoinData = getConnection().createQueryTable(table, sqlJoinEmployeeVersion); + + IDataSet expectedDataSet = + new FlatXmlDataFileLoader().load("/testAddValidEmployeeJoin_expected.xml"); + ITable expectedJoinData = expectedDataSet.getTable(table); + + ITable actualFilteredJoinData = + DefaultColumnFilter.excludedColumnsTable(actualJoinData, excludedColumns); + ITable expectedFilteredJoinData = + DefaultColumnFilter.excludedColumnsTable(expectedJoinData, excludedColumns); + + Assertion.assertEquals(expectedFilteredJoinData, actualFilteredJoinData); + } + public void testUpdateValidEmployee() throws PersistenceException {} public void testUpdateNonExistingEmployee() throws PersistenceException {} -- cgit v1.2.3-70-g09d2 From 595d6c6b5412b273cca205a0d6a7cac743046e1c Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Mon, 21 May 2018 14:19:36 +0200 Subject: Adjust EmployeePersistenceTest to use new JdbcTestCase [#25949] --- .../einsatzverwaltung/dao/EmployeePersistenceTest.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index 6bfd898..b16bab0 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -2,7 +2,9 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.Helper; import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.io.InputStream; import java.time.LocalDate; @@ -13,9 +15,10 @@ import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.operation.DatabaseOperation; import org.dbunit.util.fileloader.FlatXmlDataFileLoader; +import org.junit.After; import org.junit.Assert; +import org.junit.Test; public class EmployeePersistenceTest extends JdbcTestCase { @@ -34,16 +37,13 @@ public class EmployeePersistenceTest extends JdbcTestCase { return new FlatXmlDataSetBuilder().build(res); } - protected DatabaseOperation getSetUpOperation() throws Exception { - return DatabaseOperation.CLEAN_INSERT; - } - - protected DatabaseOperation getTearDownOperation() throws Exception { + @After + public void tearDownOperation() throws Exception { // needed in order to completely reset DB, including resetting auto_increment sequences jdbcConnectionManager.getConnection().prepareStatement("DROP ALL OBJECTS").execute(); - return DatabaseOperation.DELETE_ALL; } + @Test public void testListEmployees() throws PersistenceException { Set employees = employeePersistence.list(); @@ -84,6 +84,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { Assert.assertEquals(3, employees.size()); } + @Test public void testEmployeeListNoElement() throws PersistenceException { Set employees = employeePersistence.list(); @@ -109,6 +110,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { .isPilot(false) .build(); + @Test public void testAddValidEmployee_EmployeeVersion() throws Exception { employeePersistence.add(validEmployee); @@ -136,6 +138,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { Assertion.assertEquals(expectedFilteredTable, actualFilteredTable); } + @Test public void testAddValidEmployee_Employee() throws Exception { employeePersistence.add(validEmployee); @@ -163,6 +166,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { Assertion.assertEquals(expectedFilteredEmpTable, actualFilteredEmpTable); } + @Test public void testAddValidEmployee_Join() throws Exception { employeePersistence.add(validEmployee); -- cgit v1.2.3-70-g09d2 From 02112c80a9111bed79d2633d38438ac2172f61ba Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Mon, 21 May 2018 14:22:02 +0200 Subject: Refactor testAddValidEmployeeJoin to use helper methods [#25963] --- .../einsatzverwaltung/dao/EmployeePersistenceTest.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index b16bab0..970c300 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -173,6 +173,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { String[] excludedColumns = new String[] {"E_VERSION", "V_ID"}; String table = "EMP_JOIN"; + String expectedXmlDataFileName = "testAddValidEmployeeJoin_expected.xml"; String sqlJoinEmployeeVersion = "SELECT e.id AS E_ID, v.name AS V_NAME, v.birthday AS V_BIRTHDAY, " @@ -181,16 +182,13 @@ public class EmployeePersistenceTest extends JdbcTestCase { + "FROM Employee e " + "JOIN EmployeeVersion v ON e.version = v.id"; - ITable actualJoinData = getConnection().createQueryTable(table, sqlJoinEmployeeVersion); - - IDataSet expectedDataSet = - new FlatXmlDataFileLoader().load("/testAddValidEmployeeJoin_expected.xml"); - ITable expectedJoinData = expectedDataSet.getTable(table); - ITable actualFilteredJoinData = - DefaultColumnFilter.excludedColumnsTable(actualJoinData, excludedColumns); + Helper.getActualFilteredQueryTableData( + getConnection(), table, sqlJoinEmployeeVersion, excludedColumns); + ITable expectedFilteredJoinData = - DefaultColumnFilter.excludedColumnsTable(expectedJoinData, excludedColumns); + Helper.getExpectedFilteredTableData( + table, excludedColumns, expectedXmlDataFileName); Assertion.assertEquals(expectedFilteredJoinData, actualFilteredJoinData); } -- cgit v1.2.3-70-g09d2 From a673936a8f144c17980b33bd8047959fb9148252 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Mon, 21 May 2018 14:24:57 +0200 Subject: Implement tests for updating a valid and non-existing employee [#25949] --- .../dao/EmployeePersistenceTest.java | 66 +++++++++++++++++++++- .../resources/testUpdateValidEmployee_expected.xml | 14 +++++ 2 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/testUpdateValidEmployee_expected.xml (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index 970c300..6bd42bf 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -193,7 +193,69 @@ public class EmployeePersistenceTest extends JdbcTestCase { Assertion.assertEquals(expectedFilteredJoinData, actualFilteredJoinData); } - public void testUpdateValidEmployee() throws PersistenceException {} + Employee validUpdateEmployee = + Employee.builder() + .id(3) + .name("Lisa") + .birthday(LocalDate.parse("1999-10-16")) + .educationLevel(EducationLevel.NKA) + .isDriver(true) + .isPilot(true) + .build(); + + @Test + public void testUpdateValidEmployee_EmployeeVersion() throws Exception { + + employeePersistence.update(validUpdateEmployee); + + String[] excludedColumnsEmployeeVersion = new String[] {"ID"}; + String tableEmployeeVersion = "EMPLOYEEVERSION"; + + ITable actualTableData = + Helper.getActualFilteredTableData( + getConnection(), tableEmployeeVersion, excludedColumnsEmployeeVersion); + ITable expedtedTableData = + Helper.getExpectedFilteredTableData( + tableEmployeeVersion, + excludedColumnsEmployeeVersion, + "testUpdateValidEmployee_expected.xml"); + + Assertion.assertEquals(expedtedTableData, actualTableData); + } + + @Test + public void testUpdateValidEmployee_Employee() throws Exception { - public void testUpdateNonExistingEmployee() throws PersistenceException {} + employeePersistence.update(validUpdateEmployee); + + String[] excludedColumns = new String[] {"VERSION"}; + String tableName = "EMPLOYEE"; + String expectedXmlDataFileName = "testUpdateValidEmployee_expected.xml"; + + ITable actualTableData = + Helper.getActualFilteredTableData(getConnection(), tableName, excludedColumns); + + ITable expectedTableData = + Helper.getExpectedFilteredTableData( + tableName, excludedColumns, expectedXmlDataFileName); + + Assertion.assertEquals(expectedTableData, actualTableData); + } + + @Test(expected = ElementNotFoundException.class) + public void testUpdateNonExistingEmployee() + throws PersistenceException, ElementNotFoundException { + + Employee nonExistentEmployee = + Employee.builder() + .id(1000) + .name("Lisa") + .birthday(LocalDate.parse("1999-10-16")) + .educationLevel(EducationLevel.NKA) + .isDriver(true) + .isPilot(true) + .build(); + + employeePersistence.update(nonExistentEmployee); + } } diff --git a/src/test/resources/testUpdateValidEmployee_expected.xml b/src/test/resources/testUpdateValidEmployee_expected.xml new file mode 100644 index 0000000..4a35a7b --- /dev/null +++ b/src/test/resources/testUpdateValidEmployee_expected.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3-70-g09d2 From c528886d6a6f2f9d833bfd0558e2cd53520db14d Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Mon, 21 May 2018 14:40:18 +0200 Subject: Refactor EmployeeServiceTest to use a single builder [#25963] --- .../service/EmployeeServiceTest.java | 35 ++++++++-------------- 1 file changed, 12 insertions(+), 23 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java index c6b1423..9f7a965 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/einsatzverwaltung/service/EmployeeServiceTest.java @@ -22,6 +22,14 @@ public class EmployeeServiceTest { private final EmployeeDAO employeePersistence = mock(EmployeeDatabaseDao.class); private final EmployeeService employeeService = new EmployeeServiceImpl(employeePersistence); + private final Employee.Builder employeeBuilder = + Employee.builder() + .name("Testperson") + .birthday(LocalDate.parse("1996-10-10")) + .educationLevel(EducationLevel.NKA) + .isDriver(true) + .isPilot(false); + public EmployeeServiceTest() throws PersistenceException { when(employeePersistence.add(any())).thenReturn(1L); } @@ -29,14 +37,7 @@ public class EmployeeServiceTest { @Test public void testAddValidEmployee() { - Employee employee = - Employee.builder() - .name("Testperson") - .birthday(LocalDate.MIN) - .educationLevel(EducationLevel.NA) - .isDriver(true) - .isPilot(false) - .build(); + Employee employee = employeeBuilder.build(); try { Assert.assertThat(employeeService.add(employee), is(1L)); @@ -46,21 +47,9 @@ public class EmployeeServiceTest { } @Test(expected = InvalidEmployeeException.class) - public void testAddInvalidEmployee() throws InvalidEmployeeException { - - Employee employee = - Employee.builder() - .name("") - .birthday(LocalDate.MIN) - .educationLevel(EducationLevel.NA) - .isDriver(true) - .isPilot(false) - .build(); + public void testAddInvalidEmployee() throws InvalidEmployeeException, ServiceException { - try { - employeeService.add(employee); - } catch (ServiceException e) { - fail(); - } + Employee employee = employeeBuilder.name("").build(); + employeeService.add(employee); } } -- cgit v1.2.3-70-g09d2 From 32b3c0fe1f4d82e8e7d425a81e423c69bd0da219 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Mon, 21 May 2018 15:52:09 +0200 Subject: Access jdbcConnectionManager via getter [#25963] --- .../groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index 6bd42bf..06addf6 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -40,7 +40,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { @After public void tearDownOperation() throws Exception { // needed in order to completely reset DB, including resetting auto_increment sequences - jdbcConnectionManager.getConnection().prepareStatement("DROP ALL OBJECTS").execute(); + getJdbcConnectionManager().getConnection().prepareStatement("DROP ALL OBJECTS").execute(); } @Test -- cgit v1.2.3-70-g09d2 From 52ebd0cb71fa266aa8ab825e046656895140448b Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Mon, 21 May 2018 15:52:48 +0200 Subject: Implement service tests for employeeUpdate [#25950] --- .../service/EmployeeServiceTest.java | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/EmployeeServiceTest.java index 9f7a965..c49cd9d 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/einsatzverwaltung/service/EmployeeServiceTest.java @@ -1,8 +1,8 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service; -import static junit.framework.TestCase.fail; import static org.hamcrest.CoreMatchers.is; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -10,6 +10,7 @@ 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; @@ -35,15 +36,10 @@ public class EmployeeServiceTest { } @Test - public void testAddValidEmployee() { + public void testAddValidEmployee() throws ServiceException, InvalidEmployeeException { Employee employee = employeeBuilder.build(); - - try { - Assert.assertThat(employeeService.add(employee), is(1L)); - } catch (InvalidEmployeeException | ServiceException e) { - fail(); - } + Assert.assertThat(employeeService.add(employee), is(1L)); } @Test(expected = InvalidEmployeeException.class) @@ -52,4 +48,20 @@ public class EmployeeServiceTest { Employee employee = employeeBuilder.name("").build(); employeeService.add(employee); } + + @Test + public void testUpdateValidEmployee() throws ElementNotFoundException, PersistenceException { + + Employee employee = employeeBuilder.build(); + employeePersistence.update(employee); + } + + @Test(expected = ElementNotFoundException.class) + public void testUpdateNonExistentEmployee() + throws ElementNotFoundException, PersistenceException { + + doThrow(ElementNotFoundException.class).when(employeePersistence).update(any()); + Employee employee = employeeBuilder.id(1000).build(); + employeePersistence.update(employee); + } } -- cgit v1.2.3-70-g09d2 From 5181c5fbe243eaafaa03d29bf92a956d237b77d9 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 22 May 2018 16:07:47 +0200 Subject: Remove tearDownOperation from EmployeePersistenceTest + format [#25950] tearDownOperation method not needed anymore, as with the new version of JdbcTestCase, teardown automatically clears database --- .../groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java | 7 ------- 1 file changed, 7 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index 06addf6..1202641 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -16,7 +16,6 @@ import org.dbunit.dataset.ITable; import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.util.fileloader.FlatXmlDataFileLoader; -import org.junit.After; import org.junit.Assert; import org.junit.Test; @@ -37,12 +36,6 @@ public class EmployeePersistenceTest extends JdbcTestCase { return new FlatXmlDataSetBuilder().build(res); } - @After - public void tearDownOperation() throws Exception { - // needed in order to completely reset DB, including resetting auto_increment sequences - getJdbcConnectionManager().getConnection().prepareStatement("DROP ALL OBJECTS").execute(); - } - @Test public void testListEmployees() throws PersistenceException { Set employees = employeePersistence.list(); -- cgit v1.2.3-70-g09d2 From b351bbf12564c813728cd5efe00aa986ff64b083 Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Tue, 22 May 2018 16:34:22 +0200 Subject: Remove id-columns at comparison [#25874] Cannot ensure that next autogenerated id is X, because DBUnit just refreshes the DB, which is deleting the entries but not resetting sequences --- .../groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/test/java/at/ac/tuwien/sepm/assignment') diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java index 1202641..5536c1c 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeePersistenceTest.java @@ -136,7 +136,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { employeePersistence.add(validEmployee); - String[] excludedColumnsEmployee = new String[] {"VERSION"}; + String[] excludedColumnsEmployee = new String[] {"VERSION", "ID"}; String tableEmployee = "EMPLOYEE"; // load actual and expected data set @@ -164,7 +164,7 @@ public class EmployeePersistenceTest extends JdbcTestCase { employeePersistence.add(validEmployee); - String[] excludedColumns = new String[] {"E_VERSION", "V_ID"}; + String[] excludedColumns = new String[] {"E_VERSION", "V_ID", "E_ID"}; String table = "EMP_JOIN"; String expectedXmlDataFileName = "testAddValidEmployeeJoin_expected.xml"; -- cgit v1.2.3-70-g09d2