From 335473a69b97bdfab2d7a565ab26f7f85b7c12fc Mon Sep 17 00:00:00 2001 From: xkromm <514365@mail.muni.cz> Date: Tue, 21 May 2024 15:45:20 +0200 Subject: [PATCH] finished flight facade tests --- .../fi/pa165/facade/FlightFacadeTest.java | 75 ++++++++++++--- .../facade/FlightRealizationFacadeTest.java | 93 ++++++++++++++++++- .../pa165/facade/IssueReportFacadeTest.java | 58 ++++++++++-- .../muni/fi/pa165/utils/TestApiFactory.java | 12 +-- .../muni/fi/pa165/utils/TestDaoFactory.java | 9 +- 5 files changed, 217 insertions(+), 30 deletions(-) diff --git a/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightFacadeTest.java b/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightFacadeTest.java index b55d340..2c15994 100644 --- a/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightFacadeTest.java +++ b/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightFacadeTest.java @@ -1,21 +1,21 @@ package cz.muni.fi.pa165.facade; +import cz.muni.fi.pa165.api.flight.Flight; import cz.muni.fi.pa165.api.flight.requests.FlightRequest; import cz.muni.fi.pa165.exception.FlightNotFoundException; import cz.muni.fi.pa165.service.FlightService; import cz.muni.fi.pa165.utils.TestApiFactory; import cz.muni.fi.pa165.utils.TestDaoFactory; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.util.List; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) @@ -27,30 +27,81 @@ public class FlightFacadeTest { @InjectMocks private FlightFacade flightFacade; - @BeforeEach - public void simulate_post_construct() { + @Test + public void getFlights() { + List<cz.muni.fi.pa165.dao.Flight> daoFlights = List.of(TestDaoFactory.getFlightEntity()); + List<Flight> apiFlights = List.of(TestApiFactory.getFlightEntity()); + + when(flightService.getAllFlights(anyInt(), anyInt())).thenReturn(daoFlights); + List<Flight> result = flightFacade.getFlights(0, 10); + + assertEquals(apiFlights, result); + verify(flightService, times(1)).getAllFlights(0, 10); } @Test public void getFlight_flightFound() { - var id = new UUID(0x1, 0xf); - cz.muni.fi.pa165.api.flight.Flight apiPlane = TestApiFactory.getFlightEntity(); - cz.muni.fi.pa165.dao.Flight daoPlane = TestDaoFactory.getFlightEntity(); - FlightRequest request = TestApiFactory.getFlightRequest(); - when(flightService.getFlight(id)).thenReturn(daoPlane); + UUID id = UUID.randomUUID(); + cz.muni.fi.pa165.dao.Flight daoFlight = TestDaoFactory.getFlightEntity(); + Flight apiFlight = TestApiFactory.getFlightEntity(); - var result = flightFacade.getFlight(id); + when(flightService.getFlight(id)).thenReturn(daoFlight); + + Flight result = flightFacade.getFlight(id); assertNotNull(result); + assertEquals(apiFlight, result); verify(flightService, times(1)).getFlight(id); } @Test - void getById_flightNotFound_throwsFlightNotFoundException() { + public void getFlight_flightNotFound_throwsFlightNotFoundException() { UUID id = UUID.randomUUID(); when(flightService.getFlight(id)).thenThrow(new FlightNotFoundException()); + assertThrows(FlightNotFoundException.class, () -> flightFacade.getFlight(id)); + + verify(flightService, times(1)).getFlight(id); + } + + @Test + public void createFlight() { + FlightRequest flightRequest = TestApiFactory.getFlightRequest(); + cz.muni.fi.pa165.dao.Flight daoFlight = TestDaoFactory.getFlightEntity(); + Flight apiFlight = TestApiFactory.getFlightEntity(); + + when(flightService.createFlight(any(cz.muni.fi.pa165.dao.Flight.class))).thenReturn(daoFlight); + + Flight result = flightFacade.createFlight(flightRequest); + assertEquals(apiFlight, result); + + verify(flightService, times(1)).createFlight(any(cz.muni.fi.pa165.dao.Flight.class)); + } + + @Test + public void updateFlight() { + UUID id = UUID.randomUUID(); + FlightRequest flightRequest = TestApiFactory.getFlightRequest(); + cz.muni.fi.pa165.dao.Flight daoFlight = TestDaoFactory.getFlightEntity(); + Flight apiFlight = TestApiFactory.getFlightEntity(); + + when(flightService.updateFlight(eq(id), any(cz.muni.fi.pa165.dao.Flight.class))).thenReturn(daoFlight); + + Flight result = flightFacade.updateFlight(id, flightRequest); + assertEquals(apiFlight, result); + + verify(flightService, times(1)).updateFlight(eq(id), any(cz.muni.fi.pa165.dao.Flight.class)); + } + + @Test + public void deleteFlight() { + UUID id = UUID.randomUUID(); + doNothing().when(flightService).deleteFlight(id); + + flightFacade.deleteFlight(id); + + verify(flightService, times(1)).deleteFlight(id); } } diff --git a/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightRealizationFacadeTest.java b/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightRealizationFacadeTest.java index e4de58e..6b58e24 100644 --- a/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightRealizationFacadeTest.java +++ b/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/FlightRealizationFacadeTest.java @@ -1,18 +1,107 @@ package cz.muni.fi.pa165.facade; +import cz.muni.fi.pa165.api.flight.requests.FlightRealizationRequest; +import cz.muni.fi.pa165.dao.FlightRealization; +import cz.muni.fi.pa165.exception.FlightRealizationNotFoundException; +import cz.muni.fi.pa165.service.FlightRealizationService; import cz.muni.fi.pa165.service.FlightService; +import cz.muni.fi.pa165.utils.TestApiFactory; +import cz.muni.fi.pa165.utils.TestDaoFactory; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + @ExtendWith(MockitoExtension.class) public class FlightRealizationFacadeTest { @Mock - private FlightService flightService; + private FlightRealizationService flightRealizationService; @InjectMocks - private FlightFacade flightFacade; + private FlightRealizationFacade flightRealizationFacade; + + @Test + public void getAllFlightRealizations() { + List<FlightRealization> daoFlightRealizations = List.of(TestDaoFactory.getflightRealizationEntity()); + List<cz.muni.fi.pa165.api.flight.FlightRealization> apiFlightRealizations = List.of(TestApiFactory.getFlightRealizationEntity()); + + when(flightRealizationService.getAllFlightRealizations()).thenReturn(daoFlightRealizations); + + List<cz.muni.fi.pa165.api.flight.FlightRealization> result = flightRealizationFacade.getAllFlightRealizations(); + + assertEquals(apiFlightRealizations, result); + verify(flightRealizationService, times(1)).getAllFlightRealizations(); + } + + @Test + public void getFlightRealization_flightFound() { + UUID id = new UUID(0x1, 0xf); + FlightRealization daoFlightRealization = TestDaoFactory.getflightRealizationEntity(); + cz.muni.fi.pa165.api.flight.FlightRealization apiFlightRealization = TestApiFactory.getFlightRealizationEntity(); + + when(flightRealizationService.getFlightRealizationById(id)).thenReturn(daoFlightRealization); + + cz.muni.fi.pa165.api.flight.FlightRealization result = flightRealizationFacade.getFlightRealization(id); + assertNotNull(result); + assertEquals(apiFlightRealization, result); + + verify(flightRealizationService, times(1)).getFlightRealizationById(id); + } + + @Test + public void getFlightRealization_flightNotFound_throwsFlightRealizationNotFoundException() { + UUID id = UUID.randomUUID(); + when(flightRealizationService.getFlightRealizationById(id)).thenThrow(new FlightRealizationNotFoundException()); + + assertThrows(FlightRealizationNotFoundException.class, () -> flightRealizationFacade.getFlightRealization(id)); + + verify(flightRealizationService, times(1)).getFlightRealizationById(id); + } + + @Test + public void createFlightRealization() { + FlightRealizationRequest flightRealizationRequest = TestApiFactory.getFlightRelizationRequest(); + FlightRealization daoFlightRealization = TestDaoFactory.getflightRealizationEntity(); + cz.muni.fi.pa165.api.flight.FlightRealization apiFlightRealization = TestApiFactory.getFlightRealizationEntity(); + + when(flightRealizationService.createFlightRealization(any(cz.muni.fi.pa165.dao.FlightRealization.class))).thenReturn(daoFlightRealization); + + cz.muni.fi.pa165.api.flight.FlightRealization result = flightRealizationFacade.createFlightRealization(flightRealizationRequest); + assertEquals(apiFlightRealization, result); + + verify(flightRealizationService, times(1)).createFlightRealization(any(cz.muni.fi.pa165.dao.FlightRealization.class)); + } + + @Test + public void updateFlightRealization() { + UUID id = new UUID(0x1, 0xf); + FlightRealizationRequest flightRealizationRequest = TestApiFactory.getFlightRelizationRequest(); + FlightRealization daoFlightRealization = TestDaoFactory.getflightRealizationEntity(); + cz.muni.fi.pa165.api.flight.FlightRealization apiFlightRealization = TestApiFactory.getFlightRealizationEntity(); + + when(flightRealizationService.updateFlightRealization(eq(id), any(cz.muni.fi.pa165.dao.FlightRealization.class))).thenReturn(daoFlightRealization); + + cz.muni.fi.pa165.api.flight.FlightRealization result = flightRealizationFacade.updateFlightRealization(id, flightRealizationRequest); + assertEquals(apiFlightRealization, result); + + verify(flightRealizationService, times(1)).updateFlightRealization(eq(id), any(cz.muni.fi.pa165.dao.FlightRealization.class)); + } + + @Test + public void deleteFlightRealization() { + UUID id = new UUID(0x1, 0xf); + doNothing().when(flightRealizationService).deleteFlightRealization(id); + + flightRealizationFacade.deleteFlightRealization(id); + verify(flightRealizationService, times(1)).deleteFlightRealization(id); + } } diff --git a/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/IssueReportFacadeTest.java b/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/IssueReportFacadeTest.java index f5e74d8..1908e38 100644 --- a/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/IssueReportFacadeTest.java +++ b/airports-flight-service/src/test/java/cz/muni/fi/pa165/facade/IssueReportFacadeTest.java @@ -14,6 +14,8 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; +import java.util.UUID; + import static org.junit.jupiter.api.Assertions.assertEquals; @ExtendWith(MockitoExtension.class) @@ -34,14 +36,58 @@ public class IssueReportFacadeTest { @Test public void createIssueReport() { cz.muni.fi.pa165.api.flight.IssueReport issueReport = TestApiFactory.getIssueReport(); - System.out.println(issueReport); IssueReport daoIssueReport = TestDaoFactory.getIssueReport(); - System.out.println(daoIssueReport); IssueReportRequest issueReportRequest = TestApiFactory.getIssueReportRequest(); - System.out.println(issueReportRequest); - Mockito.when(issueReportService.createIssueReport(daoIssueReport)).thenReturn(daoIssueReport); - assertEquals(issueReport, issueReportFacade.createIssueReport(issueReportRequest)); - Mockito.verify(issueReportService, Mockito.times(1)).createIssueReport(daoIssueReport); + // Use argument matchers to handle dynamic UUID + Mockito.when(issueReportService.createIssueReport(Mockito.any(IssueReport.class))) + .thenReturn(daoIssueReport); + + cz.muni.fi.pa165.api.flight.IssueReport returnedIssueReport = issueReportFacade.createIssueReport(issueReportRequest); + + assertEquals(issueReport, returnedIssueReport); + Mockito.verify(issueReportService, Mockito.times(1)).createIssueReport(Mockito.any(IssueReport.class)); + } + + @Test + public void getIssueReport() { + UUID id = UUID.randomUUID(); + cz.muni.fi.pa165.dao.IssueReport daoIssueReport = TestDaoFactory.getIssueReport(); + cz.muni.fi.pa165.api.flight.IssueReport apiIssueReport = TestApiFactory.getIssueReport(); + + Mockito.when(issueReportService.get(id)).thenReturn(daoIssueReport); + + cz.muni.fi.pa165.api.flight.IssueReport returnedIssueReport = issueReportFacade.getIssueReport(id); + + assertEquals(apiIssueReport, returnedIssueReport); + Mockito.verify(issueReportService, Mockito.times(1)).get(id); + } + + @Test + public void updateIssueReport() { + UUID id = UUID.randomUUID(); + cz.muni.fi.pa165.dao.IssueReport daoIssueReport = TestDaoFactory.getIssueReport(); + cz.muni.fi.pa165.api.flight.IssueReport apiIssueReport = TestApiFactory.getIssueReport(); + IssueReportRequest issueReportRequest = TestApiFactory.getIssueReportRequest(); + + Mockito.when(issueReportService.updateIssueReport(Mockito.eq(id), Mockito.any(IssueReport.class))) + .thenReturn(daoIssueReport); + + cz.muni.fi.pa165.api.flight.IssueReport returnedIssueReport = issueReportFacade.updateIssueReport(id, issueReportRequest); + + assertEquals(apiIssueReport, returnedIssueReport); + Mockito.verify(issueReportService, Mockito.times(1)) + .updateIssueReport(Mockito.eq(id), Mockito.any(IssueReport.class)); + } + + @Test + public void deleteIssueReport() { + UUID id = UUID.randomUUID(); + + Mockito.doNothing().when(issueReportService).deleteIssueReport(id); + + issueReportFacade.deleteIssueReport(id); + + Mockito.verify(issueReportService, Mockito.times(1)).deleteIssueReport(id); } } 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 5fd3b7e..5577183 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 @@ -21,18 +21,18 @@ public class TestApiFactory { public static Flight getFlightEntity() { UUID id = new UUID(0x1, 0xf); Flight flight = new Flight(); - flight.setPlaneId(id); - flight.setDestination(new UUID(0x2, 0xf)); + flight.setPlaneId(new UUID(0x2, 0xf)); + flight.setDestination(new UUID(0x4, 0xf)); flight.setOrigin(new UUID(0x3, 0xf)); flight.setId(id); Set<UUID> pilots = new HashSet<>(); - pilots.add(UUID.randomUUID()); - pilots.add(UUID.randomUUID()); + pilots.add(new UUID(0x5, 0xf)); + pilots.add(new UUID(0x6, 0xf)); flight.setPilotIds(pilots); Set<UUID> stewards = new HashSet<>(); - stewards.add(UUID.randomUUID()); - stewards.add(UUID.randomUUID()); + stewards.add(new UUID(0x7, 0xf)); + stewards.add(new UUID(0x8, 0xf)); flight.setStewardIds(stewards); return flight; 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 cdcb865..e80c0e9 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 @@ -38,12 +38,13 @@ public class TestDaoFactory { public static FlightRealization getflightRealizationEntity() { UUID id = new UUID(0x1, 0xf); FlightRealization flightRealization = new FlightRealization(); - flightRealization.setDepartureTime(LocalDateTime.now()); - flightRealization.setArrivalTime(LocalDateTime.now()); - flightRealization.setFlightId(id); + flightRealization.setDepartureTime(LocalDateTime.of(2002, 2, 2, 2, 2, 2)); + flightRealization.setArrivalTime(LocalDateTime.of(2002, 2, 2, 2, 2, 2)); + flightRealization.setFlightId(new UUID(0x2, 0xf)); flightRealization.setReport("report"); flightRealization.setDuration(Duration.ofHours(1)); - flightRealization.setKilometersFlown(850); + flightRealization.setKilometersFlown(850.0); + flightRealization.setId(id); return flightRealization; } -- GitLab