From 9c4956db538160bdec702868e735036837879333 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Diana=20Gul=C4=8D=C3=ADkov=C3=A1?= <xgulcik@fi.muni.cz>
Date: Sun, 16 Apr 2023 19:52:15 +0200
Subject: [PATCH] test_for_driver

---
 .../driver/service/DriverServiceImpl.java     |   1 +
 .../driver/rest/DriverControllerTest.java     |  35 ++----
 .../pa165/driver/rest/DriverServiceTest.java  | 102 ++++++++++++++++++
 .../pa165/driver/rest/DriverTestUtil.java     |  34 ++++++
 4 files changed, 146 insertions(+), 26 deletions(-)
 create mode 100644 driver/src/test/java/cz/muni/pa165/driver/rest/DriverServiceTest.java
 create mode 100644 driver/src/test/java/cz/muni/pa165/driver/rest/DriverTestUtil.java

diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java b/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java
index e6b0e4b3..db4a956e 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java
@@ -94,6 +94,7 @@ public class DriverServiceImpl implements DriverService {
    * @return all stored drivers dto list
    */
   public List<DriverInsightDto> getAllDrivers() {
+    System.out.println();
     return driverRepository.findAll()
         .stream()
         .map(driverMapper::convertToInsightDto)
diff --git a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerTest.java b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerTest.java
index ec3f5d0a..269f0986 100644
--- a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerTest.java
+++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerTest.java
@@ -9,12 +9,10 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import cz.muni.pa165.common_library.dtos.DriverAddDto;
 import cz.muni.pa165.common_library.dtos.DriverInsightDto;
 import cz.muni.pa165.common_library.dtos.DriverResponseDto;
 import cz.muni.pa165.common_library.dtos.DriverUpdateDto;
 import cz.muni.pa165.driver.service.DriverService;
-import java.util.HashMap;
 import java.util.List;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -39,7 +37,7 @@ class DriverControllerTest {
   @Test
   void driverAddTest() throws Exception {
 
-    var driver = getAddDriver();
+    var driver = DriverTestUtil.getAddDriver();
     given(driverService.addDriver(driver)).willReturn(new DriverResponseDto(1L));
 
     String response = mockMvc.perform(post("/driver/add")
@@ -54,7 +52,7 @@ class DriverControllerTest {
   @Test
   void badRequestTest() throws Exception {
 
-    var driver = getAddDriver();
+    var driver = DriverTestUtil.getAddDriver();
     given(driverService.addDriver(driver)).willReturn(new DriverResponseDto(1L));
 
     mockMvc.perform(post("/driver/add")
@@ -67,8 +65,8 @@ class DriverControllerTest {
   @Test
   void driverGetAllTest() throws Exception {
 
-    var driver = getAddDriver();
-    given(driverService.getAllDrivers()).willReturn(List.of(getInsightDriver()));
+    var driver = DriverTestUtil.getAddDriver();
+    given(driverService.getAllDrivers()).willReturn(List.of(DriverTestUtil.getInsightDriver()));
 
     String response = mockMvc.perform(get("/driver/get/all"))
         .andExpect(status().isOk())
@@ -105,8 +103,8 @@ class DriverControllerTest {
   @Test
   void driverGetByIdTest() throws Exception {
 
-    var driver = getAddDriver();
-    given(driverService.getDriverById(anyLong())).willReturn(getInsightDriver());
+    var driver = DriverTestUtil.getAddDriver();
+    given(driverService.getDriverById(anyLong())).willReturn(DriverTestUtil.getInsightDriver());
 
     String response = mockMvc.perform(get("/driver/get/id=1"))
         .andExpect(status().isOk())
@@ -122,8 +120,9 @@ class DriverControllerTest {
 
   @Test
   void driverUpdateByIdTest() throws Exception {
-    DriverUpdateDto driverUpdateDto = getUpdateDriver();
-    given(driverService.updateDriverById(1L, driverUpdateDto)).willReturn(new DriverResponseDto(1L));
+    DriverUpdateDto driverUpdateDto = DriverTestUtil.getUpdateDriver();
+    given(driverService.updateDriverById(1L, driverUpdateDto)).willReturn(
+        new DriverResponseDto(1L));
 
     String response = mockMvc.perform(put("/driver/update/id=1")
             .contentType(MediaType.APPLICATION_JSON)
@@ -133,20 +132,4 @@ class DriverControllerTest {
     var driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class);
     Assertions.assertEquals(1L, driverResponseDto.id());
   }
-
-  private DriverAddDto getAddDriver() {
-    var driver = new DriverAddDto("Name",
-        "Surname", "Nationality", new HashMap<>());
-    return driver;
-  }
-
-  private DriverInsightDto getInsightDriver() {
-    return new DriverInsightDto(1L, "Name",
-        "Surname", "Nationality", new HashMap<>());
-  }
-
-  private DriverUpdateDto getUpdateDriver() {
-    return new DriverUpdateDto("Name",
-        "Surname", "Nationality", new HashMap<>());
-  }
 }
diff --git a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverServiceTest.java b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverServiceTest.java
new file mode 100644
index 00000000..a06649ea
--- /dev/null
+++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverServiceTest.java
@@ -0,0 +1,102 @@
+package cz.muni.pa165.driver.rest;
+
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import cz.muni.pa165.common_library.dtos.DriverAddDto;
+import cz.muni.pa165.common_library.dtos.DriverInsightDto;
+import cz.muni.pa165.common_library.dtos.DriverResponseDto;
+import cz.muni.pa165.driver.data.model.Driver;
+import cz.muni.pa165.driver.data.repository.DriverRepository;
+import cz.muni.pa165.driver.service.DriverService;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Optional;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+public class DriverServiceTest {
+
+  @Autowired
+  private MockMvc mockMvc;
+
+  @Autowired
+  private ObjectMapper objectMapper;
+
+  @Autowired
+  private DriverService driverService;
+
+  @Mock
+  private DriverRepository driverRepository;
+
+  @Test
+  void driverAddTest() throws Exception {
+
+    var driverAddDTO = DriverTestUtil.getAddDriver();
+    var driverDao = DriverTestUtil.getDaoDriver();
+
+    given(driverRepository.save(driverDao)).willReturn(driverDao);
+
+    String response = mockMvc.perform(post("/driver/add")
+            .contentType(MediaType.APPLICATION_JSON)
+            .content(objectMapper.writeValueAsString(driverAddDTO)))
+        .andExpect(status().isOk())
+        .andReturn().getResponse().getContentAsString();
+    DriverResponseDto driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class);
+    Assertions.assertEquals(driverDao.getId(), driverResponseDto.id());
+  }
+
+  @Test
+  void driverGetAllTest() throws Exception {
+
+    var driver = DriverTestUtil.getAddDriver();
+    //given(driverRepository.findAll()).willReturn(List.of(DriverTestUtil.getDaoDriver()));
+    when(driverRepository.findAll()).thenReturn(List.of(DriverTestUtil.getDaoDriver()));
+
+    String response = mockMvc.perform(get("/driver/get/all"))
+        .andExpect(status().isOk())
+        .andReturn().getResponse().getContentAsString();
+    var driverResponseDto = objectMapper.readValue(response, DriverInsightDto[].class);
+    Assertions.assertAll(
+        () -> Assertions.assertEquals(1L, driverResponseDto[0].id()),
+        () -> Assertions.assertEquals(driver.name(), driverResponseDto[0].name()),
+        () -> Assertions.assertEquals(driver.surname(), driverResponseDto[0].surname()),
+        () -> Assertions.assertEquals(driver.characteristics(),
+            driverResponseDto[0].characteristics())
+    );
+  }
+
+  @Test
+  void driverGetByIdTest() throws Exception {
+
+    var driver = DriverTestUtil.getAddDriver();
+    given(driverRepository.findById(anyLong())).willReturn(Optional.of(DriverTestUtil.getDaoDriver()));
+    //when(driverRepository.findById(1L)).thenReturn(Optional.of(DriverTestUtil.getDaoDriver()));
+
+    String response = mockMvc.perform(get("/driver/get/id=1"))
+        .andExpect(status().isOk())
+        .andReturn().getResponse().getContentAsString();
+    var driverResponseDto = objectMapper.readValue(response, DriverInsightDto.class);
+    Assertions.assertAll(
+        () -> Assertions.assertEquals(1L, driverResponseDto.id()),
+        () -> Assertions.assertEquals(driver.name(), driverResponseDto.name()),
+        () -> Assertions.assertEquals(driver.surname(), driverResponseDto.surname()),
+        () -> Assertions.assertEquals(driver.characteristics(),
+            driverResponseDto.characteristics())
+    );
+  }
+
+}
diff --git a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverTestUtil.java b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverTestUtil.java
new file mode 100644
index 00000000..8a82658b
--- /dev/null
+++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverTestUtil.java
@@ -0,0 +1,34 @@
+package cz.muni.pa165.driver.rest;
+
+import cz.muni.pa165.common_library.dtos.DriverAddDto;
+import cz.muni.pa165.common_library.dtos.DriverInsightDto;
+import cz.muni.pa165.common_library.dtos.DriverUpdateDto;
+import cz.muni.pa165.driver.data.model.Driver;
+import java.util.HashMap;
+
+public class DriverTestUtil {
+
+  public static DriverAddDto getAddDriver() {
+    var driver = new DriverAddDto("Name",
+        "Surname", "Nationality", new HashMap<>());
+    return driver;
+  }
+
+  public static DriverInsightDto getInsightDriver() {
+    return new DriverInsightDto(1L, "Name",
+        "Surname", "Nationality", new HashMap<>());
+  }
+
+  public static DriverUpdateDto getUpdateDriver() {
+    return new DriverUpdateDto("Name",
+        "Surname", "Nationality", new HashMap<>());
+  }
+  public static Driver getDaoDriver() {
+    return Driver.builder()
+        .name("name")
+        .id(1L)
+        .surname("surname")
+        .characteristics(new HashMap<>())
+        .build();
+  }
+}
-- 
GitLab