/
eb
/
java-shareit
Обзор
Документация
Войти
/
eb
/
java-shareit
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
server/src/test/java/ru/practicum/shareit/user/UserControllerTest.java
154 строки
5 KB
Evgeniy Budaev
add-docker21
23 фев 2023, 13:18
23 фев 2023, 13:18
b9cc96e
Код
Авторство
О чём код?
package ru.practicum.shareit.user; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; 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.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.web.server.ResponseStatusException; import ru.practicum.shareit.user.dto.UserDto; import ru.practicum.shareit.user.dto.UserDtoResponse; import ru.practicum.shareit.user.dto.UserDtoUpdate; import ru.practicum.shareit.user.dto.UserListDto; import ru.practicum.shareit.user.service.UserService; import java.util.List; @SpringBootTest @AutoConfigureMockMvc @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class UserControllerTest { private final ObjectMapper objectMapper; @MockBean private UserService userService; private final MockMvc mvc; private static UserDtoResponse userDtoResponse; private static UserDto userDto; private static UserDtoUpdate userDtoUpdate; @BeforeEach public void setUp() { userDtoResponse = UserDtoResponse.builder() .id(1L) .name("test name") .email("test@test.ru") .build(); userDto = UserDto.builder() .name("test name") .email("test@test.ru") .build(); userDtoUpdate = UserDtoUpdate.builder() .name("test name") .email("test@test.ru") .build(); } @Test public void createUser() throws Exception { when(userService.createUser(any(UserDto.class))).thenReturn(userDtoResponse); //when mvc.perform(post("/users") .content(objectMapper.writeValueAsString(userDto)) .contentType(MediaType.APPLICATION_JSON)) .andDo(print()) //then .andExpectAll( status().isCreated(), content().json(objectMapper.writeValueAsString(userDtoResponse)) ); } @Test public void createUserDuplicate() throws Exception { when(userService.createUser(any(UserDto.class))).thenThrow(DataIntegrityViolationException.class); //when mvc.perform(post("/users") .content(objectMapper.writeValueAsString(userDto)) .contentType(MediaType.APPLICATION_JSON)) .andDo(print()) //then .andExpectAll( status().isInternalServerError() ); } @Test public void getUserById() throws Exception { when(userService.getUserById(anyLong())).thenReturn(userDtoResponse); //when mvc.perform(get("/users/1")) .andDo(print()) //then .andExpectAll( status().isOk(), content().json(objectMapper.writeValueAsString(userDtoResponse)) ); } @Test public void getUserByNotExistingId() throws Exception { when(userService.getUserById(anyLong())).thenThrow(new ResponseStatusException(HttpStatus.NOT_FOUND)); //when mvc.perform(get("/users/1")) .andDo(print()) //then .andExpectAll( status().isNotFound() ); } @Test public void getUsers() throws Exception { UserListDto userList = UserListDto.builder().users(List.of(userDtoResponse)).build(); when(userService.getUsers()).thenReturn(userList); //then mvc.perform(get("/users")) .andDo(print()) //then .andExpectAll( status().isOk(), content().json(objectMapper.writeValueAsString(userList)) ); } @Test public void updateUser() throws Exception { when(userService.updateUser(any(UserDtoUpdate.class), anyLong())).thenReturn(userDtoResponse); //then mvc.perform(patch("/users/1") .content(objectMapper.writeValueAsString(userDtoUpdate)) .contentType(MediaType.APPLICATION_JSON)) .andDo(print()) //then .andExpectAll( status().isOk(), content().json(objectMapper.writeValueAsString(userDtoResponse)) ); } @Test public void deleteUser() throws Exception { mvc.perform(delete("/users/1")) .andDo(print()) //then .andExpectAll( status().isOk() ); verify(userService, times(1)).deleteUser(1L); } }