package com.cs102.attendance.controller; import com.cs102.attendance.entity.TestConnection; import com.cs102.attendance.repository.TestConnectionRepository; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @WebMvcTest(TestController.class) public class TestControllerTest { @Autowired private MockMvc mockMvc; @MockitoBean private TestConnectionRepository testConnectionRepository; @Test public void testInsertTestDataWithDefaultMessage() throws Exception { // Given TestConnection mockSavedEntity = new TestConnection("Test message"); mockSavedEntity.setId(1L); when(testConnectionRepository.save(any(TestConnection.class))).thenReturn(mockSavedEntity); // When & Then mockMvc.perform(post("/api/test/insert-test-data") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value(1L)) .andExpect(jsonPath("$.message").value("Test message")); } @Test public void testInsertTestDataWithCustomMessage() throws Exception { // Given String customMessage = "Custom test message"; TestConnection mockSavedEntity = new TestConnection(customMessage); mockSavedEntity.setId(2L); when(testConnectionRepository.save(any(TestConnection.class))).thenReturn(mockSavedEntity); // When & Then mockMvc.perform(post("/api/test/insert-test-data") .param("message", customMessage) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value(2L)) .andExpect(jsonPath("$.message").value(customMessage)); } @Test public void testInsertTestDataWithException() throws Exception { // Given when(testConnectionRepository.save(any(TestConnection.class))) .thenThrow(new RuntimeException("Database error")); // When & Then mockMvc.perform(post("/api/test/insert-test-data") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isInternalServerError()); } }