From a5ec8bcc44e2d63ddfbd7fcc6b753e3b4454889d Mon Sep 17 00:00:00 2001 From: dongHyo Date: Wed, 25 May 2022 20:47:43 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20register=20method=20Optional=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20->=20Exception=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Optional 반환과 Exception 반환이 혼용되어 사용되고 있어, Exception 으로 통일 --- .../user/application/UserController.java | 10 ++-------- .../server/user/service/UserServiceImpl.java | 7 +++---- .../user/service/interfaces/UserService.java | 2 +- .../user/service/UserServiceImplTest.java | 18 +++++++++--------- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/server/src/main/java/com/ticketing/server/user/application/UserController.java b/server/src/main/java/com/ticketing/server/user/application/UserController.java index 6351102..9f9962c 100644 --- a/server/src/main/java/com/ticketing/server/user/application/UserController.java +++ b/server/src/main/java/com/ticketing/server/user/application/UserController.java @@ -33,14 +33,8 @@ public class UserController { @PostMapping public ResponseEntity register(@RequestBody @Valid SignUpRequest request) { - Optional user = userService.register(request.toSignUp(passwordEncoder)); - - if (user.isEmpty()) { - log.error("이미 존재하는 이메일 입니다. :: {}", request.getEmail()); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); - } - - return ResponseEntity.status(HttpStatus.CREATED).body(SignUpResponse.of(user.get())); + User user = userService.register(request.toSignUp(passwordEncoder)); + return ResponseEntity.status(HttpStatus.CREATED).body(SignUpResponse.of(user)); } @DeleteMapping diff --git a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java index c2797b1..600b32f 100644 --- a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java @@ -25,15 +25,14 @@ public class UserServiceImpl implements UserService { @Override @Transactional - public Optional register(@Valid SignUpDTO signUpDto) { + public User register(@Valid SignUpDTO signUpDto) { Optional user = userRepository.findByEmail(signUpDto.getEmail()); if (user.isPresent()) { log.error("이미 존재하는 이메일이기 때문에 신규 회원가입을 진행할 수 없습니다. :: {}", signUpDto); - return Optional.empty(); + throw new IllegalArgumentException("이미 존재하는 이메일이기 때문에 신규 회원가입을 진행할 수 없습니다."); } - User newUser = userRepository.save(signUpDto.toUser()); - return Optional.of(newUser); + return userRepository.save(signUpDto.toUser()); } @Override diff --git a/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java b/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java index 0c0f9ff..af42919 100644 --- a/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java +++ b/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java @@ -9,7 +9,7 @@ import javax.validation.Valid; public interface UserService { - Optional register(@Valid SignUpDTO signUpDto); + User register(@Valid SignUpDTO signUpDto); Optional delete(@Valid DeleteUserDTO deleteUser); diff --git a/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java b/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java index a36d738..56caf11 100644 --- a/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java +++ b/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java @@ -1,6 +1,7 @@ package com.ticketing.server.user.service; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @@ -49,10 +50,9 @@ class UserServiceImplTest { when(userRepository.findByEmail("ticketing@gmail.com")).thenReturn(Optional.of(user)); // when - Optional user = userService.register(signUp); - // then - assertThat(user).isEmpty(); + assertThatThrownBy(() -> userService.register(signUp)) + .isInstanceOf(IllegalArgumentException.class); } @Test @@ -63,10 +63,10 @@ class UserServiceImplTest { when(userRepository.save(any())).thenReturn(user); // when - Optional user = userService.register(signUp); + User user = userService.register(signUp); // then - assertThat(user).isPresent(); + assertThat(user).isNotNull(); } @Test @@ -98,20 +98,20 @@ class UserServiceImplTest { @Test @DisplayName("패스워드 변경 시 이메일이 존재하지 않을 경우") void modifyPasswordFail() { - // given + // given when(userRepository.findByEmailAndIsDeletedFalse("ticketing@gmail.com")).thenReturn(Optional.empty()); - // when + // when Optional user = userService.modifyPassword(changePassword); - // then + // then assertThat(user).isEmpty(); } @Test @DisplayName("패스워드 변경 성공했을 경우") void modifyPasswordSuccess() { - // given + // given when(userRepository.findByEmailAndIsDeletedFalse("ticketing@gmail.com")).thenReturn(Optional.of(user)); // when