From c35e67aee984312cdc7f2447a73df7fae7f851ca Mon Sep 17 00:00:00 2001
From: Viktoria Pundy <viktoria.pundy@aon.at>
Date: Sun, 6 May 2018 11:46:00 +0200
Subject: Added some test for persistence layer/small changes

---
 .../operation/OperationPersistenceTest.java        | 128 +++++++++++++++++
 .../operation/OperationServiceComponentTest.java   | 151 ++++++++++++++++++++
 .../operation/OperationServiceUnitTest.java        | 155 +++++++++++++++++++++
 3 files changed, 434 insertions(+)
 create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationPersistenceTest.java
 create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java
 create mode 100644 src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java

(limited to 'src/test/java/at/ac/tuwien/sepm/assignment')

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
new file mode 100644
index 0000000..575588e
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationPersistenceTest.java
@@ -0,0 +1,128 @@
+package at.ac.tuwien.sepm.assignment.groupphase.operation;
+
+import static junit.framework.TestCase.fail;
+
+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.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.List;
+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(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
new file mode 100644
index 0000000..7ffe135
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceComponentTest.java
@@ -0,0 +1,151 @@
+package at.ac.tuwien.sepm.assignment.groupphase.operation;
+
+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.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.ServiceException;
+import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager;
+import java.time.Instant;
+import java.util.List;
+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 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
new file mode 100644
index 0000000..fc10553
--- /dev/null
+++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/operation/OperationServiceUnitTest.java
@@ -0,0 +1,155 @@
+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.List;
+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(List.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(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();
+        }
+    }
+}
-- 
cgit v1.2.3-70-g09d2