package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service; import static org.junit.Assert.assertEquals; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.EmployeeDatabaseDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.OperationDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.OperationDatabaseDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDatabaseDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDatabaseDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Status; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; import at.ac.tuwien.sepm.assignment.groupphase.util.Helper; import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.util.Set; import org.dbunit.Assertion; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.junit.Test; public class OperationServiceIntegrationTest extends JdbcTestCase { private OperationService operationService; private Operation o; public OperationServiceIntegrationTest() { EmployeeDAO employeeDAO = new EmployeeDatabaseDAO(getJdbcConnectionManager()); RegistrationDAO registrationDAO = new RegistrationDatabaseDAO(getJdbcConnectionManager(), employeeDAO); VehicleDAO vehicleDAO = new VehicleDatabaseDAO( getJdbcConnectionManager(), (RegistrationDatabaseDAO) registrationDAO); OperationDAO operationDAO = new OperationDatabaseDAO( getJdbcConnectionManager(), vehicleDAO, (RegistrationDatabaseDAO) registrationDAO); VehicleService vehicleService = new VehicleServiceImpl(vehicleDAO); operationService = new OperationServiceImpl(operationDAO, vehicleDAO, vehicleService); Vehicle v1 = Vehicle.builder() .id(1) .name("RTW-1") .constructionType(Vehicle.ConstructionType.HOCHDACH) .type(Vehicle.VehicleType.RTW) .status(Vehicle.Status.FREI_FUNK) .hasNef(true) .build(); Vehicle v2 = v1.toBuilder().id(2).build(); Vehicle v3 = v1.toBuilder().id(3).build(); o = Operation.builder() .opCode("RD-2B0M") .status(Status.ACTIVE) .vehicles(Set.of(v1, v2, v3)) .destination("New destination") .additionalInfo("New information") .build(); } @Override protected IDataSet getDataSet() throws Exception { return getDataSet("operationDAOUpdateSetup.xml"); } @Test public void addValidOperation() throws Exception { long id = operationService.add(o); assertEquals(2, id); String tableName = "Operation"; String[] excludedColumns = new String[] {"created"}; ITable actual = Helper.getActualFilteredTableData(getConnection(), tableName, excludedColumns); ITable expected = Helper.getExpectedFilteredTableData( tableName, excludedColumns, "operationDAOAddOperation.xml"); Assertion.assertEquals(expected, actual); } @Test(expected = InvalidOperationException.class) public void addInvalidOperation() throws InvalidOperationException, ServiceException { operationService.add(o.toBuilder().opCode("").build()); } }