Implement more methods in user service

This commit is contained in:
hou27
2022-05-19 02:27:20 +09:00
parent 140160a10f
commit 1e67af83df
5 changed files with 88 additions and 40 deletions

View File

@@ -20,16 +20,7 @@ public class UserController {
private final UserService userService; private final UserService userService;
@PostMapping("/signUp") @PostMapping("/signUp")
public Boolean signUp(@ModelAttribute @Validated UserSignUpRequest signUpReq) throws Exception { public User signUp(@ModelAttribute @Validated UserSignUpRequest signUpReq) throws Exception {
if(userService.isEmailExist(signUpReq.getEmail())) { return userService.signUp(signUpReq);
throw new Exception("Your Mail already Exist.");
}
User newUser = userService.signUp(signUpReq.toUserEntity());
System.out.println("newUser = " + newUser.toString());
if(newUser.getId() != null) {
System.out.println("running");
return true;
}
return false;
} }
} }

View File

@@ -1,21 +1,30 @@
package demo.api.user; package demo.api.user;
import demo.api.user.domain.User; import demo.api.user.domain.User;
import demo.api.user.dtos.UserSignUpRequest;
import java.util.List;
import java.util.Optional;
public interface UserService { public interface UserService {
/** /**
* 유저의 정보로 회원가입 * 유저의 정보로 회원가입
* @param user 가입할 유저의 정보 * @param signUpReq 가입할 유저의 정보 Dto
* @return 가입된 유저 정보 * @return 가입된 유저 정보
*/ */
User signUp(User user); User signUp(UserSignUpRequest signUpReq) throws Exception;
/**
* 모든 유저 리스트를 반환
* @return 유저 리스트
*/
List<User> findAll();
/** /**
* 이메일을 통해 유저 조회 * 이메일을 통해 유저 조회
* @param email * @param email
* @return 조회된 유저 * @return 조회된 유저
*/ */
User findUserByEmail(String email); Optional<User> findByEmail(String email);
/** /**
* 유저 정보 수정 * 유저 정보 수정
@@ -25,10 +34,11 @@ public interface UserService {
*/ */
User updateUser(User user, String newInfo); User updateUser(User user, String newInfo);
/** // /**
* 이메일 중복 여부를 확인 // * 이메일 중복 여부를 확인
* @param email // *
* @return true | false // * @param email
*/ // * @return true | false
boolean isEmailExist(String email); // */
// boolean isEmailExist(String email);
} }

View File

@@ -1,7 +1,10 @@
package demo.api.user; package demo.api.user;
import demo.api.user.domain.User; import demo.api.user.domain.User;
import demo.api.user.dtos.UserSignUpRequest;
import demo.api.user.repository.UserRepository; import demo.api.user.repository.UserRepository;
import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -10,18 +13,24 @@ import org.springframework.transaction.annotation.Transactional;
@RequiredArgsConstructor @RequiredArgsConstructor
@Transactional @Transactional
public class UserServiceImpl implements UserService { public class UserServiceImpl implements UserService {
// private final BCryptPasswordEncoder passwordEncoder;
private final UserRepository userRepository; private final UserRepository userRepository;
@Override @Override
public User signUp(User user) { public User signUp(UserSignUpRequest signUpReq) throws Exception {
// user.hashPassword(passwordEncoder); if(this.isEmailExist(signUpReq.getEmail())) {
return userRepository.save(user); throw new Exception("Your Mail already Exist.");
}
return userRepository.save(signUpReq.toUserEntity());
} }
@Override @Override
public User findUserByEmail(String email) { public List<User> findAll() {
return null; return userRepository.findAll();
}
@Override
public Optional<User> findByEmail(String email) {
return userRepository.findByEmail(email);
} }
@Override @Override
@@ -29,8 +38,14 @@ public class UserServiceImpl implements UserService {
return null; return null;
} }
@Override /**
public boolean isEmailExist(String email) { * 이메일 중복 여부를 확인
return false; *
* @param email
* @return true | false
*/
private boolean isEmailExist(String email) {
Optional<User> byEmail = userRepository.findByEmail(email);
return !byEmail.isEmpty();
} }
} }

View File

@@ -18,6 +18,13 @@ public class UserSignUpRequest {
@NotEmpty(message = "Please enter your Name") @NotEmpty(message = "Please enter your Name")
private String name; private String name;
@Builder
public UserSignUpRequest(String email, String password, String name) {
this.email = email;
this.password = password;
this.name = name;
}
/** /**
* Transform to User Entity * Transform to User Entity
* @return User Entity * @return User Entity

View File

@@ -7,7 +7,10 @@ import demo.api.AppConfig;
import demo.api.user.UserService; import demo.api.user.UserService;
import demo.api.user.UserServiceImpl; import demo.api.user.UserServiceImpl;
import demo.api.user.domain.User; import demo.api.user.domain.User;
import demo.api.user.dtos.UserSignUpRequest;
import demo.api.user.repository.UserRepository; import demo.api.user.repository.UserRepository;
import java.util.List;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@@ -18,15 +21,15 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@SpringBootTest @SpringBootTest
@Transactional
@DisplayName("User Service Test") @DisplayName("User Service Test")
class UserServiceTest { class UserServiceTest {
private static final String EMAIL = "test@email.com"; private static final String EMAIL = "test@email.com";
private static final String PASSWORD = "12345"; private static final String PASSWORD = "12345";
private static final String NAME = "김정호"; private static final String NAME = "김정호";
UserService userService; private UserService userService;
@Autowired @Autowired
UserRepository userRepository; private UserRepository userRepository;
@BeforeEach @BeforeEach
public void beforeEach() { public void beforeEach() {
@@ -35,9 +38,9 @@ class UserServiceTest {
} }
@Test @Test
@DisplayName("User Sign Up") @DisplayName("유저 회원가입")
void signUp() { void signUp() throws Exception {
User user = createUser(); UserSignUpRequest user = createSignUpRequest();
System.out.println("user = " + user.toString()); System.out.println("user = " + user.toString());
User newUser = userService.signUp(user); User newUser = userService.signUp(user);
@@ -46,19 +49,41 @@ class UserServiceTest {
} }
@Test @Test
void findUserByEmail() { @DisplayName("모든 유저 리스트를 반환")
void findAll() throws Exception {
// given
List<User> prevUserList = userService.findAll();
int prevLen = prevUserList.size();
UserSignUpRequest user1 = createSignUpRequest();
userService.signUp(user1);
// when
List<User> userList = userService.findAll();
// then
assertEquals(prevLen + 1, userList.size());
} }
@Test @Test
void updateUserName() { @DisplayName("이메일로 유저 찾기")
void findByEmail() throws Exception {
// given
UserSignUpRequest user1 = createSignUpRequest();
userService.signUp(user1);
// when
Optional<User> byEmail = userService.findByEmail(EMAIL);
// then
assertThat(byEmail.get().getEmail()).isEqualTo(user1.getEmail());
} }
@Test @Test
void isEmailExist() { void updateUser() {
} }
private User createUser() { private UserSignUpRequest createSignUpRequest() {
return User.builder() return UserSignUpRequest.builder()
.email(EMAIL) .email(EMAIL)
.password(PASSWORD) .password(PASSWORD)
.name(NAME) .name(NAME)