From 6eadfcfbc01aed31714ba7159397efa3a2985261 Mon Sep 17 00:00:00 2001 From: minseokkang Date: Tue, 20 Sep 2022 10:15:39 +0900 Subject: [PATCH] fix : user Signup Test Refactoring --- .../user/repository/UserRepository.java | 2 +- .../api/users/UsersControllerTest.java | 8 --- .../repository/UserRepositoryTest.java | 25 ++++----- .../service/UserServiceImplTest.java | 52 ++++++++----------- 4 files changed, 34 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java b/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java index bfed7a4..277af74 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java +++ b/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java @@ -7,5 +7,5 @@ import org.springframework.data.repository.CrudRepository; public interface UserRepository extends CrudRepository { User save(User user); User findByEmail(String email); - + Iterable findAll(); } diff --git a/src/test/java/com/io/realworld/api/users/UsersControllerTest.java b/src/test/java/com/io/realworld/api/users/UsersControllerTest.java index 8641a3b..9f02c1c 100644 --- a/src/test/java/com/io/realworld/api/users/UsersControllerTest.java +++ b/src/test/java/com/io/realworld/api/users/UsersControllerTest.java @@ -2,12 +2,10 @@ package com.io.realworld.api.users; import com.fasterxml.jackson.databind.ObjectMapper; import com.io.realworld.domain.aggregate.user.dto.UserResponse; -import com.io.realworld.domain.aggregate.user.dto.UserSigninRequest; import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest; import com.io.realworld.exception.CustomException; import com.io.realworld.exception.Error; import com.io.realworld.domain.aggregate.user.controller.UsersController; -import com.io.realworld.domain.aggregate.user.entity.User; import com.io.realworld.domain.service.JwtService; import com.io.realworld.domain.aggregate.user.service.UserServiceImpl; import org.hamcrest.Matchers; @@ -16,24 +14,18 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.InjectMocks; -import org.mockito.Mockito; 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.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; - import org.springframework.test.web.servlet.result.MockMvcResultMatchers; - import java.util.stream.Stream; - import static org.mockito.ArgumentMatchers.any; - import static org.mockito.Mockito.when; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; @WebMvcTest(controllers = UsersController.class) diff --git a/src/test/java/com/io/realworld/repository/UserRepositoryTest.java b/src/test/java/com/io/realworld/repository/UserRepositoryTest.java index f8252e7..3832624 100644 --- a/src/test/java/com/io/realworld/repository/UserRepositoryTest.java +++ b/src/test/java/com/io/realworld/repository/UserRepositoryTest.java @@ -3,10 +3,14 @@ package com.io.realworld.repository; import com.io.realworld.domain.aggregate.user.entity.User; import com.io.realworld.domain.aggregate.user.repository.UserRepository; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import java.util.stream.Stream; + import static org.assertj.core.api.Assertions.assertThat; @@ -17,12 +21,10 @@ class UserRepositoryTest { private UserRepository userRepository; - @Test + @MethodSource("validUsers") + @ParameterizedTest @DisplayName("회원가입 레포 테스트") - void save() { - - //given - User user = user(); + void save(User user) { //when User saved_user = userRepository.save(user); @@ -35,14 +37,7 @@ class UserRepositoryTest { assertThat(saved_user.getImage()).isEqualTo(user.getImage()); } - - private User user() { - return User.builder() - .username("kms") - .password("") - .email("kms@gamil.com") - .bio("1") - .image("image") - .build(); + public static Stream validUsers() { + return Stream.of(Arguments.of(User.builder().username("kms").password("").email("kms@gamil.com").bio("1").image("image").build())); } } \ No newline at end of file diff --git a/src/test/java/com/io/realworld/service/UserServiceImplTest.java b/src/test/java/com/io/realworld/service/UserServiceImplTest.java index 98e409d..fde844d 100644 --- a/src/test/java/com/io/realworld/service/UserServiceImplTest.java +++ b/src/test/java/com/io/realworld/service/UserServiceImplTest.java @@ -6,9 +6,9 @@ import com.io.realworld.domain.aggregate.user.entity.User; import com.io.realworld.domain.aggregate.user.repository.UserRepository; import com.io.realworld.domain.aggregate.user.service.UserServiceImpl; import com.io.realworld.domain.service.JwtService; -import org.junit.jupiter.api.BeforeEach; +import com.io.realworld.exception.CustomException; +import com.io.realworld.exception.Error; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -17,17 +17,16 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.*; import static org.mockito.internal.verification.VerificationModeFactory.times; @ExtendWith(MockitoExtension.class) @@ -46,11 +45,6 @@ class UserServiceImplTest { @Mock private JwtService jwtService; - @BeforeEach - void setUp() { - userService = new UserServiceImpl(userRepository, passwordEncoder, jwtService); - } - @MethodSource("validUsers") @ParameterizedTest @@ -81,23 +75,24 @@ class UserServiceImplTest { } - private UserSignupRequest getUserSignupRequest() { - return UserSignupRequest.builder() - .username("kms") - .email("kms@gmail.com") - .password("password") + @MethodSource("duplicateUsers") + @ParameterizedTest + @DisplayName("회원가입_중복_서비스_테스트") + void duplicateSignup(UserSignupRequest requestUser) { + User user = User.builder() + .username(requestUser.getUsername()) + .bio("") + .email(requestUser.getEmail()) + .image("") + .password(requestUser.getPassword()) .build(); + + when(userRepository.findByEmail(any(String.class))).thenReturn(null).thenThrow(new CustomException(Error.DUPLICATE_USER)); + when(userRepository.save(any(User.class))).thenReturn(user); + userService.signup(requestUser); + } - private UserResponse getUserResponse() { - return UserResponse.builder() - .username("kms") - .email("kms@gmail.com") - .bio("1") - .image("image") - .token("kms") - .build(); - } public static Stream validUsers() { return Stream.of( @@ -107,11 +102,10 @@ class UserServiceImplTest { ); } - private static Stream invalidUsers() { + private static Stream duplicateUsers() { return Stream.of( - Arguments.of(UserSignupRequest.builder().username("").email("kms@gmail.com").password("password").build()), - Arguments.of(UserSignupRequest.builder().username("jyb").email("yyb95@gmail.com").password("").build()), - Arguments.of(UserSignupRequest.builder().username("kms").email("").password("password").build()) + Arguments.of(UserSignupRequest.builder().username("kms").email("kms@gmail.com").password("password").build()), + Arguments.of(UserSignupRequest.builder().username("kms").email("kms@gmail.com").password("password").build()) ); }