From 53f56f233070b7762f143a8dee3710680514d1fc 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 20:31:48 +0200
Subject: [PATCH] integration tests

---
 .../pa165/driver/rest/DriverServiceTest.java  | 67 ++++++++++++++-----
 .../pa165/driver/rest/DriverTestUtil.java     |  5 +-
 2 files changed, 54 insertions(+), 18 deletions(-)

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
index a06649ea..7a19a54a 100644
--- a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverServiceTest.java
+++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverServiceTest.java
@@ -2,15 +2,19 @@ package cz.muni.pa165.driver.rest;
 
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
 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.request.MockMvcRequestBuilders.put;
 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.data.model.Driver;
 import cz.muni.pa165.driver.data.repository.DriverRepository;
 import cz.muni.pa165.driver.service.DriverService;
@@ -18,11 +22,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Optional;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
 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.boot.test.mock.mockito.MockBean;
 import org.springframework.http.MediaType;
 import org.springframework.test.web.servlet.MockMvc;
 
@@ -36,34 +42,31 @@ public class DriverServiceTest {
   @Autowired
   private ObjectMapper objectMapper;
 
-  @Autowired
-  private DriverService driverService;
-
-  @Mock
+  @MockBean
   private DriverRepository driverRepository;
 
   @Test
-  void driverAddTest() throws Exception {
-
-    var driverAddDTO = DriverTestUtil.getAddDriver();
-    var driverDao = DriverTestUtil.getDaoDriver();
-
-    given(driverRepository.save(driverDao)).willReturn(driverDao);
+  void driverAddByIdTest() throws Exception {
+    var driverUpdateDto = DriverTestUtil.getAddDriver();
+    Driver driverDao = DriverTestUtil.getDaoDriver();
+    given(driverRepository.save(driverDao)).willReturn(
+        driverDao);
+    given(driverRepository.findById(anyLong())).willReturn(
+        Optional.of(driverDao));
 
     String response = mockMvc.perform(post("/driver/add")
             .contentType(MediaType.APPLICATION_JSON)
-            .content(objectMapper.writeValueAsString(driverAddDTO)))
+            .content(objectMapper.writeValueAsString(driverUpdateDto)))
         .andExpect(status().isOk())
         .andReturn().getResponse().getContentAsString();
-    DriverResponseDto driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class);
-    Assertions.assertEquals(driverDao.getId(), driverResponseDto.id());
+    var driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class);
+    //Assertions.assertEquals(1L, 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"))
@@ -83,8 +86,7 @@ public class DriverServiceTest {
   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()));
+    when(driverRepository.findById(1L)).thenReturn(Optional.of(DriverTestUtil.getDaoDriver()));
 
     String response = mockMvc.perform(get("/driver/get/id=1"))
         .andExpect(status().isOk())
@@ -99,4 +101,37 @@ public class DriverServiceTest {
     );
   }
 
+  @Test
+  void driverUpdateByIdTest() throws Exception {
+    DriverUpdateDto driverUpdateDto = DriverTestUtil.getUpdateDriver();
+    Driver driverDao = DriverTestUtil.getDaoDriver();
+    given(driverRepository.save(driverDao)).willReturn(
+        driverDao);
+    given(driverRepository.findById(anyLong())).willReturn(
+        Optional.of(driverDao));
+
+    String response = mockMvc.perform(put("/driver/update/id=1")
+            .contentType(MediaType.APPLICATION_JSON)
+            .content(objectMapper.writeValueAsString(driverUpdateDto)))
+        .andExpect(status().isOk())
+        .andReturn().getResponse().getContentAsString();
+    var driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class);
+    Assertions.assertEquals(1L, driverResponseDto.id());
+  }
+
+  @Test
+  void driverDeleteTest() throws Exception {
+    DriverUpdateDto driverUpdateDto = DriverTestUtil.getUpdateDriver();
+    Driver driverDao = DriverTestUtil.getDaoDriver();
+    given(driverRepository.findById(anyLong())).willReturn(
+        Optional.of(driverDao));
+
+    String response = mockMvc.perform(delete("/driver/remove/id=1")
+            .contentType(MediaType.APPLICATION_JSON)
+            .content(objectMapper.writeValueAsString(driverUpdateDto)))
+        .andExpect(status().isOk())
+        .andReturn().getResponse().getContentAsString();
+    var driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class);
+    Assertions.assertEquals(1L, driverResponseDto.id());
+  }
 }
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
index 8a82658b..532b5882 100644
--- a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverTestUtil.java
+++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverTestUtil.java
@@ -25,9 +25,10 @@ public class DriverTestUtil {
   }
   public static Driver getDaoDriver() {
     return Driver.builder()
-        .name("name")
+        .name("Name")
         .id(1L)
-        .surname("surname")
+        .surname("Surname")
+        .nationality("Nationality")
         .characteristics(new HashMap<>())
         .build();
   }
-- 
GitLab