From 9d011e0cd912bb10103e00d0f281adeb804dc93d Mon Sep 17 00:00:00 2001
From: xkromm <514365@mail.muni.cz>
Date: Mon, 20 May 2024 21:03:46 +0200
Subject: [PATCH] updated flight

---
 .../cz/muni/fi/pa165/api/flight/Flight.java   |  5 ++--
 .../api/flight/requests/FlightRequest.java    |  4 ++++
 .../java/cz/muni/fi/pa165/dao/Flight.java     | 11 +++++++++
 .../muni/fi/pa165/service/FlightService.java  | 20 ++++++++++------
 .../fi/pa165/rest/FlightControllerTest.java   |  6 +++--
 .../fi/pa165/service/IssueReportTest.java     |  2 +-
 .../muni/fi/pa165/utils/TestApiFactory.java   | 23 +++++++++++++++----
 .../muni/fi/pa165/utils/TestDaoFactory.java   | 14 +++++++++--
 8 files changed, 67 insertions(+), 18 deletions(-)

diff --git a/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/Flight.java b/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/Flight.java
index 10dba8a..8afc1e9 100644
--- a/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/Flight.java
+++ b/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/Flight.java
@@ -6,6 +6,7 @@ import lombok.NoArgsConstructor;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 @Data
@@ -15,8 +16,8 @@ public class Flight {
 
     private UUID id;
     private UUID planeId;
-    private List<UUID> pilotIds;
-    private List<UUID> stewardIds;
+    private Set<UUID> pilotIds;
+    private Set<UUID> stewardIds;
     private UUID origin;
     private UUID destination;
 }
diff --git a/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/requests/FlightRequest.java b/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/requests/FlightRequest.java
index 4a89842..641f0f1 100644
--- a/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/requests/FlightRequest.java
+++ b/airport-manager-api/src/main/java/cz/muni/fi/pa165/api/flight/requests/FlightRequest.java
@@ -3,6 +3,8 @@ package cz.muni.fi.pa165.api.flight.requests;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
+
+import java.util.Set;
 import java.util.UUID;
 
 @Data
@@ -12,4 +14,6 @@ public class FlightRequest {
     private UUID origin;
     private UUID destination;
     private UUID planeId;
+    private Set<UUID> pilotIds;
+    private Set<UUID> stewardIds;
 }
diff --git a/airports-flight-service/src/main/java/cz/muni/fi/pa165/dao/Flight.java b/airports-flight-service/src/main/java/cz/muni/fi/pa165/dao/Flight.java
index 0524c1c..ffbc325 100644
--- a/airports-flight-service/src/main/java/cz/muni/fi/pa165/dao/Flight.java
+++ b/airports-flight-service/src/main/java/cz/muni/fi/pa165/dao/Flight.java
@@ -1,10 +1,13 @@
 package cz.muni.fi.pa165.dao;
 
 import cz.muni.fi.pa165.Constants;
+import cz.muni.fi.pa165.api.employee.Steward;
 import lombok.Data;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 
@@ -19,4 +22,12 @@ public class Flight implements Serializable {
     private UUID origin;
     private UUID destination;
     private UUID planeId;
+
+    @ElementCollection
+    @Column(name = "steward_id")
+    private Set<UUID> pilotIds;
+
+    @ElementCollection
+    @Column(name = "steward_id")
+    private Set<UUID> stewardIds;
 }
diff --git a/airports-flight-service/src/main/java/cz/muni/fi/pa165/service/FlightService.java b/airports-flight-service/src/main/java/cz/muni/fi/pa165/service/FlightService.java
index e204a8b..f9fee8d 100644
--- a/airports-flight-service/src/main/java/cz/muni/fi/pa165/service/FlightService.java
+++ b/airports-flight-service/src/main/java/cz/muni/fi/pa165/service/FlightService.java
@@ -35,19 +35,25 @@ public class FlightService {
         return flightRepository.save(flight);
     }
 
-    public Flight updateFlight(UUID id,Flight flight){
+    public Flight updateFlight(UUID id, Flight flight) {
         Flight existingFlight = flightRepository.findById(id).orElseThrow(FlightNotFoundException::new);
-        if(flight.getDestination() != null) {
+        if (flight.getDestination() != null) {
             existingFlight.setDestination(flight.getDestination());
         }
-        if(flight.getOrigin() != null){
+        if (flight.getOrigin() != null) {
             existingFlight.setOrigin(flight.getOrigin());
         }
-       if(flight.getPlaneId() != null){
-           existingFlight.setPlaneId(flight.getPlaneId());
-       }
+        if (flight.getPlaneId() != null) {
+            existingFlight.setPlaneId(flight.getPlaneId());
+        }
+        if (!flight.getPilotIds().isEmpty()) {
+            existingFlight.getPilotIds().addAll(flight.getPilotIds());
+        }
+        if (!flight.getStewardIds().isEmpty()) {
+            existingFlight.getStewardIds().addAll(flight.getStewardIds());
+        }
 
-        Flight updateFlight =  flightRepository.save(existingFlight);
+        Flight updateFlight = flightRepository.save(existingFlight);
 
         return updateFlight;
     }
diff --git a/airports-flight-service/src/test/java/cz/muni/fi/pa165/rest/FlightControllerTest.java b/airports-flight-service/src/test/java/cz/muni/fi/pa165/rest/FlightControllerTest.java
index b02a29d..69716f3 100644
--- a/airports-flight-service/src/test/java/cz/muni/fi/pa165/rest/FlightControllerTest.java
+++ b/airports-flight-service/src/test/java/cz/muni/fi/pa165/rest/FlightControllerTest.java
@@ -75,8 +75,10 @@ public class FlightControllerTest {
     void findById_flightNotFound_throws404() throws Exception {
         UUID id = UUID.randomUUID();
         Mockito.when(flightFacade.getFlight(id)).thenThrow(new FlightNotFoundException());
-        RequestBuilder request = MockMvcRequestBuilders.get("/flights/{id}", id).accept(MediaType.APPLICATION_JSON);
-        mockMvc.perform(request).andExpect(status().isNotFound());
+        mockMvc.perform(get("/flights/{id}", id)
+                        .accept(MediaType.APPLICATION_JSON))
+                .andExpect(status().isNotFound());
+
         Mockito.verify(flightFacade, Mockito.times(1)).getFlight(id);
     }
 
diff --git a/airports-flight-service/src/test/java/cz/muni/fi/pa165/service/IssueReportTest.java b/airports-flight-service/src/test/java/cz/muni/fi/pa165/service/IssueReportTest.java
index 3fb8456..c03be12 100644
--- a/airports-flight-service/src/test/java/cz/muni/fi/pa165/service/IssueReportTest.java
+++ b/airports-flight-service/src/test/java/cz/muni/fi/pa165/service/IssueReportTest.java
@@ -85,6 +85,6 @@ public class IssueReportTest {
 
         IssueReport returnedIssueReport = issueReportService.updateIssueReport(id, update);
         assertEquals(updatedIssueReport, returnedIssueReport);
-        Mockito.verify(issueReportRepository, Mockito.times(1)).save(updatedIssueReport);
+        Mockito.verify(issueReportRepository, Mockito.times(2)).save(updatedIssueReport);
     }
 }
diff --git a/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestApiFactory.java b/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestApiFactory.java
index 670dbd2..599c7f3 100644
--- a/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestApiFactory.java
+++ b/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestApiFactory.java
@@ -10,9 +10,7 @@ import org.springframework.stereotype.Component;
 
 import java.time.Duration;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 @Component
 public class TestApiFactory {
@@ -25,6 +23,15 @@ public class TestApiFactory {
         flight.setDestination(new UUID(0x2, 0xf));
         flight.setOrigin(new UUID(0x3, 0xf));
         flight.setId(id);
+        Set<UUID> pilots = new HashSet<>();
+        pilots.add(UUID.randomUUID());
+        pilots.add(UUID.randomUUID());
+        flight.setPilotIds(pilots);
+
+        Set<UUID> stewards = new HashSet<>();
+        stewards.add(UUID.randomUUID());
+        stewards.add(UUID.randomUUID());
+        flight.setStewardIds(stewards);
 
         return flight;
     }
@@ -56,10 +63,18 @@ public class TestApiFactory {
     }
 
     public static FlightRequest getFlightRequest() {
+        Set<UUID> pilots = new HashSet<>();
+        pilots.add(UUID.randomUUID());
+        pilots.add(UUID.randomUUID());
+
+        Set<UUID> stewards = new HashSet<>();
+        stewards.add(UUID.randomUUID());
+        stewards.add(UUID.randomUUID());
         FlightRequest flightRequest = new FlightRequest(
                 new UUID(0x1, 0xf),
                 new UUID(0x1, 0xf),
-                new UUID(0x1, 0xf)
+                new UUID(0x1, 0xf),
+                pilots, stewards
         );
         return flightRequest;
     }
diff --git a/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestDaoFactory.java b/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestDaoFactory.java
index 817570c..baae76a 100644
--- a/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestDaoFactory.java
+++ b/airports-flight-service/src/test/java/cz/muni/fi/pa165/utils/TestDaoFactory.java
@@ -7,6 +7,8 @@ import org.springframework.stereotype.Component;
 
 import java.time.Duration;
 import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Set;
 import java.util.UUID;
 
 @Component
@@ -18,8 +20,16 @@ public class TestDaoFactory {
         flight.setPlaneId(id);
         flight.setOrigin(new UUID(0x1, 0xf));
         flight.setDestination(new UUID(0x1, 0xf));
-//        flight.setDestination("Destination");
-//        flight.setOrigin("Origin");
+
+        Set<UUID> pilots = new HashSet<>();
+        pilots.add(UUID.randomUUID());
+        pilots.add(UUID.randomUUID());
+        flight.setPilotIds(pilots);
+
+        Set<UUID> stewards = new HashSet<>();
+        stewards.add(UUID.randomUUID());
+        stewards.add(UUID.randomUUID());
+        flight.setStewardIds(stewards);
 
         return flight;
     }
-- 
GitLab