diff --git a/src/test/java/com/cardiff/client_project/SuperAdminControllerTest.java b/src/test/java/com/cardiff/client_project/SuperAdminControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c173f9d8e76571d6e34666518a1e1cc7089191a3 --- /dev/null +++ b/src/test/java/com/cardiff/client_project/SuperAdminControllerTest.java @@ -0,0 +1,106 @@ +package com.cardiff.client_project; + +import com.cardiff.client_project.pojo.dto.SelectDTO; +import com.cardiff.client_project.pojo.dto.SignUserDTO; +import com.cardiff.client_project.service.SuperAdminService; +import com.cardiff.client_project.utils.Result; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentMatchers; +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; + +import java.util.Arrays; +import java.util.List; + +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +public class SuperAdminControllerTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private SuperAdminService superAdminService; + + @Test + void testSignIn() throws Exception { + // Construct test data + SignUserDTO signDTO = new SignUserDTO(); + signDTO.setName("testUser"); + signDTO.setPassword("password123"); + + Result expectedResult = Result.success("User registered successfully"); + when(superAdminService.insertUserInform(any(SignUserDTO.class))).thenReturn(expectedResult); + + // post + mockMvc.perform(post("/superAdmin/sign") + .contentType(MediaType.APPLICATION_JSON) + .content(new ObjectMapper().writeValueAsString(signDTO))) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.msg").value("User registered successfully")); + + // Verify that the service layer is invoked + verify(superAdminService, times(1)).insertUserInform(any(SignUserDTO.class)); + } + + @Test + void testDeleteHospitalById() throws Exception { + List<Integer> ids = Arrays.asList(1, 2, 3); + Result mockResult = Result.success("successfully"); + when(superAdminService.deleteById(eq(ids), eq("hospital"))).thenReturn(mockResult); + + mockMvc.perform(delete("/superAdmin/deleteHospitalById") + .contentType(MediaType.APPLICATION_JSON) + .content(new ObjectMapper().writeValueAsString(ids))) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(1)) + .andExpect(jsonPath("$.msg").value("successfully")); + + verify(superAdminService, times(1)).deleteById(eq(ids), eq("hospital")); + } + + @Test + void testSelectByItem() throws Exception { + SelectDTO selectDTO = new SelectDTO(); + selectDTO.setName("testQuery"); + Result mockResult = Result.success("Query successful"); + when(superAdminService.selectByItem(any(SelectDTO.class))).thenReturn(mockResult); + + mockMvc.perform(post("/superAdmin/select") + .contentType(MediaType.APPLICATION_JSON) + .content(new ObjectMapper().writeValueAsString(selectDTO))) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(1)) + .andExpect(jsonPath("$.msg").value("Query successful")); + + verify(superAdminService, times(1)).selectByItem(any(SelectDTO.class)); + } + + @Test + void testUpdateById() throws Exception { + SelectDTO selectDTO = new SelectDTO(); + selectDTO.setId(1); + selectDTO.setName("newData"); + Result mockResult = Result.success("Update successful"); + when(superAdminService.update(any(SelectDTO.class))).thenReturn(mockResult); + + mockMvc.perform(put("/superAdmin/update") + .contentType(MediaType.APPLICATION_JSON) + .content(new ObjectMapper().writeValueAsString(selectDTO))) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(1)) + .andExpect(jsonPath("$.msg").value("Update successful")); + + verify(superAdminService, times(1)).update(any(SelectDTO.class)); + } +}