/
on-line-javalex
/
HW_NoSQL_JavaData
Обзор
Документация
Войти
/
on-line-javalex
/
HW_NoSQL_JavaData
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
test/java/Mommy/controller/UserControllerTest.java
140 строк
6 KB
on-line-javalex
create: GlobalExceptionHandlerTest.java, UserControllerTest.java, UserMapperTest.java, MommyApplicationTest.java, UserServiceTest.java
12 май 2026, 13:59
Верифицирован
12 май 2026, 13:59
311e66f
Код
Авторство
О чём код?
package Mommy.controller; import Mommy.dto.UserCreateRequest; import Mommy.dto.UserResponse; import Mommy.entity.User; import Mommy.mapper.UserMapper; import Mommy.service.UserService; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; 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.boot.test.mock.mockito.MockBean; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import java.util.List; import static org.hamcrest.Matchers.hasSize; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @WebMvcTest(UserController.class) // поднимаем только контроллер class UserControllerTest { @Autowired private MockMvc mockMvc; @SuppressWarnings("deprecation") @MockBean private UserService userService; @Autowired private ObjectMapper objectMapper; private User sampleUser; private UserResponse sampleResponse; @BeforeEach void setUp() { sampleUser = new User("Alice", "alice@example.com", 30); sampleUser.setId("507f1f77bcf86cd799439011"); sampleUser.setVersion(1L); sampleUser.setDeleted(false); sampleResponse = UserMapper.toResponse(sampleUser); } @Test void getUserByIdShouldReturnUser() throws Exception { // Arrange: сервис возвращает пользователя when(userService.findById("507f1f77bcf86cd799439011")).thenReturn(sampleUser); // Act & Assert: отправляем GET и проверяем JSON mockMvc.perform(get("/api/users/507f1f77bcf86cd799439011")) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value("507f1f77bcf86cd799439011")) .andExpect(jsonPath("$.name").value("Alice")) .andExpect(jsonPath("$.email").value("alice@example.com")) .andExpect(jsonPath("$.age").value(30)); } @Test void getAllUsersShouldReturnPage() throws Exception { // Arrange: готовим страницу с одним пользователем List<UserResponse> content = List.of(sampleResponse); Page<UserResponse> page = new PageImpl<>(content, PageRequest.of(0, 20), 1); when(userService.findAll(any())).thenReturn(page); // Act & Assert: проверяем структуру ответа mockMvc.perform(get("/api/users") .param("page", "0") .param("size", "5")) .andExpect(status().isOk()) .andExpect(jsonPath("$.content").isArray()) .andExpect(jsonPath("$.content", hasSize(1))) .andExpect(jsonPath("$.totalElements").value(1)); } @Test void createUserShouldReturnCreated() throws Exception { // Arrange: сервис создаёт пользователя when(userService.create(any(User.class))).thenReturn(sampleUser); // DTO для создания UserCreateRequest request = new UserCreateRequest("alice@example.com", "Alice", 30); String json = objectMapper.writeValueAsString(request); // Act & Assert mockMvc.perform(post("/api/users") .contentType(MediaType.APPLICATION_JSON) .content(json)) .andExpect(status().isCreated()) .andExpect(jsonPath("$.id").value("507f1f77bcf86cd799439011")) .andExpect(jsonPath("$.name").value("Alice")); } @Test void updateUserShouldReturnUpdated() throws Exception { // Arrange: находим и обновляем when(userService.findById("507f1f77bcf86cd799439011")).thenReturn(sampleUser); when(userService.save(any(User.class))).thenReturn(sampleUser); UserCreateRequest request = new UserCreateRequest("alice@example.com", "Alice", 31); String json = objectMapper.writeValueAsString(request); mockMvc.perform(put("/api/users/507f1f77bcf86cd799439011") .contentType(MediaType.APPLICATION_JSON) .content(json)) .andExpect(status().isOk()) .andExpect(jsonPath("$.age").value(31)); } @Test void deleteUserShouldReturnNoContent() throws Exception { mockMvc.perform(delete("/api/users/507f1f77bcf86cd799439011")) .andExpect(status().isNoContent()); } @Test void restoreUserShouldReturnOk() throws Exception { when(userService.findByIdHard("507f1f77bcf86cd799439011")).thenReturn(sampleUser); sampleUser.setDeleted(true); // для реализма when(userService.save(any(User.class))).thenReturn(sampleUser); mockMvc.perform(patch("/api/users/507f1f77bcf86cd799439011/restore")) .andExpect(status().isOk()); } @Test void deleteAllUsersShouldReturnNoContent() throws Exception { mockMvc.perform(delete("/api/users")) .andExpect(status().isNoContent()); } }