From b9621600963c82ba1ca1dd16c46647dda326bcab Mon Sep 17 00:00:00 2001 From: "DESKTOP-0N7JBUG\\user" Date: Sat, 28 Jan 2023 16:44:39 +0900 Subject: [PATCH 1/6] =?UTF-8?q?UserService/UserServiceTest=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserController.java | 55 +++------ .../user/controller/request/JoinRequest.java | 24 ++++ .../request/UpdateUserInfoRequest.java | 21 ++++ .../controller/response/UserResponse.java | 15 ++- .../user/repository/UserMemoryRepository.java | 76 ++++++++++++ .../user/repository/UserRepository.java | 18 +++ .../org/bbaemin/user/service/UserService.java | 43 +++++++ .../main/java/org/bbaemin/user/vo/User.java | 39 +++++++ .../bbaemin/user/service/UserServiceTest.java | 110 ++++++++++++++++++ 9 files changed, 356 insertions(+), 45 deletions(-) create mode 100644 bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java create mode 100644 bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java create mode 100644 bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java create mode 100644 bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java create mode 100644 bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java index 3757d51..9db0fc4 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java @@ -4,70 +4,51 @@ import org.bbaemin.user.controller.request.JoinRequest; import org.bbaemin.user.controller.request.UpdateUserInfoRequest; import org.bbaemin.user.controller.response.UserResponse; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.bbaemin.user.service.UserService; +import org.bbaemin.user.vo.User; +import org.springframework.web.bind.annotation.*; -import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; @RequestMapping("/api/v1/users") @RestController @RequiredArgsConstructor public class UserController { + private final UserService userService; + // 회원 리스트 @GetMapping public List listUser() { - return Arrays.asList( - UserResponse.builder() - .userId(1L) - .email("user1@email.com") - .nickname("user1") - .image(null) - .phoneNumber("010-1234-5678") - .build(), - UserResponse.builder() - .userId(2L) - .email("user2@email.com") - .nickname("user2") - .image(null) - .phoneNumber("010-1111-2222") - .build() - ); + return userService.getUserList().stream() + .map(UserResponse::new).collect(Collectors.toList()); } // 회원 조회 @GetMapping("/{userId}") public UserResponse getUser(@PathVariable Long userId) { - return UserResponse.builder() - .userId(userId) - .email("user1@email.com") - .nickname("user1") - .image(null) - .phoneNumber("010-1234-5678") - .build(); + User user = userService.getUser(userId); + return new UserResponse(user); } // 회원 등록 @PostMapping - public Long join(JoinRequest joinRequest) { - return 1L; + public UserResponse join(@RequestBody JoinRequest joinRequest) { + User user = userService.join(joinRequest); + return new UserResponse(user); } // 회원정보 수정 @PutMapping("/{userId}") - public Long updateUserInfo(@PathVariable Long userId, UpdateUserInfoRequest updateUserInfoRequest) { - return userId; + public UserResponse updateUserInfo(@PathVariable Long userId, @RequestBody UpdateUserInfoRequest updateUserInfoRequest) { + User user = userService.updateUserInfo(userId, updateUserInfoRequest); + return new UserResponse(user); } // 회원 탈퇴 @PatchMapping("/{userId}") - public Long quit(@PathVariable Long userId) { - return userId; + public void quit(@PathVariable Long userId) { + userService.quit(userId); } } diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java index e145c32..c3b4b77 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java @@ -1,13 +1,37 @@ package org.bbaemin.user.controller.request; +import lombok.Builder; +import org.bbaemin.user.vo.User; + public class JoinRequest { private String email; private String nickname; private String image; + // TODO - validation check : password.equals(passwordConfirm) private String password; private String passwordConfirm; private String phoneNumber; + + public User toEntity() { + return User.builder() + .email(email) + .nickname(nickname) + .image(image) + .password(password) + .phoneNumber(phoneNumber) + .build(); + } + + @Builder + private JoinRequest(String email, String nickname, String image, String password, String passwordConfirm, String phoneNumber) { + this.email = email; + this.nickname = nickname; + this.image = image; + this.password = password; + this.passwordConfirm = passwordConfirm; + this.phoneNumber = phoneNumber; + } } diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java index 67c5448..ceac492 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java @@ -1,8 +1,29 @@ package org.bbaemin.user.controller.request; +import lombok.Builder; +import lombok.Getter; +import org.bbaemin.user.vo.User; + +@Getter public class UpdateUserInfoRequest { private String nickname; private String image; private String phoneNumber; + + public User toEntity(Long userId) { + return User.builder() + .userId(userId) + .nickname(nickname) + .image(image) + .phoneNumber(phoneNumber) + .build(); + } + + @Builder + private UpdateUserInfoRequest(String nickname, String image, String phoneNumber) { + this.nickname = nickname; + this.image = image; + this.phoneNumber = phoneNumber; + } } diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/response/UserResponse.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/response/UserResponse.java index 1ca4fdb..65f1207 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/response/UserResponse.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/response/UserResponse.java @@ -1,6 +1,6 @@ package org.bbaemin.user.controller.response; -import lombok.Builder; +import org.bbaemin.user.vo.User; public class UserResponse { @@ -11,12 +11,11 @@ public class UserResponse { private String phoneNumber; - @Builder - private UserResponse(Long userId, String email, String nickname, String image, String phoneNumber) { - this.userId = userId; - this.email = email; - this.nickname = nickname; - this.image = image; - this.phoneNumber = phoneNumber; + public UserResponse(User user) { + this.userId = user.getUserId(); + this.email = user.getEmail(); + this.nickname = user.getNickname(); + this.image = user.getImage(); + this.phoneNumber = user.getPhoneNumber(); } } diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java new file mode 100644 index 0000000..97b67e3 --- /dev/null +++ b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java @@ -0,0 +1,76 @@ +package org.bbaemin.user.repository; + +import org.bbaemin.user.vo.User; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@Component +public class UserMemoryRepository implements UserRepository { + + private static final Map map = new ConcurrentHashMap<>(); + private static Long id = 0L; + + static { + map.put(++id, User.builder() + .userId(id) + .email("user1@email.com") + .nickname("user1") + .image(null) + .phoneNumber("010-1234-5678") + .build()); + map.put(++id, User.builder() + .userId(id) + .email("user2@email.com") + .nickname("user2") + .image(null) + .phoneNumber("010-1111-2222") + .build()); + } + + public static void clear() { + map.clear(); + } + + @Override + public List findAll() { + return new ArrayList<>(map.values()); + } + + @Override + public User findById(Long userId) { + return map.get(userId); + } + + @Override + public User insert(User user) { + Long userId = ++id; + user.setUserId(userId); + map.put(userId, user); + /* + map.put(userId, User.builder() + .userId(userId) + .email(user.getEmail()) + .nickname(user.getNickname()) + .image(user.getImage()) + .phoneNumber(user.getPhoneNumber()) + .build());*/ + return user; + } + + @Override + public User update(User user) { + map.put(user.getUserId(), user); + return user; + } + + @Override + public void updateUserDeleted(Long userId) { + User user = map.get(userId); + user.setDeleted(true); + map.put(userId, user); + } +} diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java new file mode 100644 index 0000000..69af070 --- /dev/null +++ b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java @@ -0,0 +1,18 @@ +package org.bbaemin.user.repository; + +import org.bbaemin.user.vo.User; + +import java.util.List; + +public interface UserRepository { + + List findAll(); + + User findById(Long userId); + + User insert(User user); + + User update(User user); + + void updateUserDeleted(Long userId); +} diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java b/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java new file mode 100644 index 0000000..f130d8d --- /dev/null +++ b/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java @@ -0,0 +1,43 @@ +package org.bbaemin.user.service; + +import lombok.RequiredArgsConstructor; +import org.bbaemin.user.controller.request.JoinRequest; +import org.bbaemin.user.controller.request.UpdateUserInfoRequest; +import org.bbaemin.user.repository.UserRepository; +import org.bbaemin.user.vo.User; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class UserService { + + private final UserRepository userRepository; + + public List getUserList() { + return userRepository.findAll(); + } + + public User getUser(Long userId) { + return userRepository.findById(userId); + } + + public User join(JoinRequest joinRequest) { + User user = joinRequest.toEntity(); + return userRepository.insert(user); + } + + public User updateUserInfo(Long userId, UpdateUserInfoRequest updateUserInfoRequest) { + User user = updateUserInfoRequest.toEntity(userId); + return userRepository.update(user); + } + + public void quit(Long userId) { +// User user = userRepository.findById(userId); +// user.quit(); +// userRepository.update(user); + userRepository.updateUserDeleted(userId); + } + +} diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java b/bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java new file mode 100644 index 0000000..5406494 --- /dev/null +++ b/bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java @@ -0,0 +1,39 @@ +package org.bbaemin.user.vo; + +import lombok.Builder; +import lombok.Getter; + +@Getter +public class User { + + private Long userId; + private String email; + private String nickname; + private String image; + private String password; + private String phoneNumber; + + private boolean deleted = false; + + @Builder + private User(Long userId, String email, String nickname, String image, String password, String phoneNumber) { + this.userId = userId; + this.email = email; + this.nickname = nickname; + this.image = image; + this.password = password; + this.phoneNumber = phoneNumber; + } + + public void quit() { + this.deleted = true; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } +} diff --git a/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java b/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java new file mode 100644 index 0000000..e87639c --- /dev/null +++ b/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java @@ -0,0 +1,110 @@ +package org.bbaemin.user.service; + +import org.bbaemin.user.controller.request.JoinRequest; +import org.bbaemin.user.controller.request.UpdateUserInfoRequest; +import org.bbaemin.user.controller.response.UserResponse; +import org.bbaemin.user.repository.UserMemoryRepository; +import org.bbaemin.user.repository.UserRepository; +import org.bbaemin.user.vo.User; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + +class UserServiceTest { + + UserRepository userRepository = new UserMemoryRepository(); + UserService userService = new UserService(userRepository); + + @BeforeEach + void init() { + UserMemoryRepository.clear(); + } +/* + @Test + void getUser() { + // given + // when + User user = userService.getUser(1L); + // then + assertThat(user.getEmail()).isEqualTo("user1@email.com"); + assertThat(user.getNickname()).isEqualTo("user1"); + assertThat(user.getImage()).isEqualTo(null); + assertThat(user.getPhoneNumber()).isEqualTo("010-1234-5678"); + }*/ + + @Test + void join() { + + // given + // when + JoinRequest joinRequest = JoinRequest.builder() + .email("user@email.com") + .nickname("user") + .image(null) + .password("password") + .passwordConfirm("password") + .phoneNumber("010-2233-4455") + .build(); + User saved = userService.join(joinRequest); + + // then + User user = userService.getUser(saved.getUserId()); + assertThat(saved).isEqualTo(user); + System.out.println(user); + System.out.println(new UserResponse(user)); + } + + @Test + void updateUserInfo() { + + // given + JoinRequest joinRequest = JoinRequest.builder() + .email("user@email.com") + .nickname("user") + .image(null) + .password("password") + .passwordConfirm("password") + .phoneNumber("010-2233-4455") + .build(); + User user = userService.join(joinRequest); + + // when + UpdateUserInfoRequest updateUserInfoRequest = UpdateUserInfoRequest.builder() + .nickname("new_user") + .image("image_path") + .phoneNumber("010-2233-4456") + .build(); + User updated = userService.updateUserInfo(user.getUserId(), updateUserInfoRequest); + + // then + assertAll( + () -> assertThat(updated.getUserId()).isEqualTo(user.getUserId()), + () -> assertThat(updated.getNickname()).isEqualTo(updateUserInfoRequest.getNickname()), + () -> assertThat(updated.getImage()).isEqualTo(updateUserInfoRequest.getImage()), + () -> assertThat(updated.getPhoneNumber()).isEqualTo(updateUserInfoRequest.getPhoneNumber()) + ); + + } + + @Test + void quit() { + + // given + JoinRequest joinRequest = JoinRequest.builder() + .email("user@email.com") + .nickname("user") + .image(null) + .password("password") + .passwordConfirm("password") + .phoneNumber("010-2233-4455") + .build(); + User user = userService.join(joinRequest); + + // when + userService.quit(user.getUserId()); + // then + assertThat(user.isDeleted()).isTrue(); + } +} \ No newline at end of file From d18253e7d7f62ebf4ad8a30ecbe1aba7038cf08e Mon Sep 17 00:00:00 2001 From: "DESKTOP-0N7JBUG\\user" Date: Sun, 5 Feb 2023 15:27:14 +0900 Subject: [PATCH 2/6] =?UTF-8?q?request/response=20DTO=20Service=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/bbaemin/user/controller/UserController.java | 4 ++-- .../java/org/bbaemin/user/service/UserService.java | 8 ++------ .../java/org/bbaemin/user/service/UserServiceTest.java | 10 +++++----- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java index 9db0fc4..ab7e937 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java @@ -35,14 +35,14 @@ public UserResponse getUser(@PathVariable Long userId) { // 회원 등록 @PostMapping public UserResponse join(@RequestBody JoinRequest joinRequest) { - User user = userService.join(joinRequest); + User user = userService.join(joinRequest.toEntity()); return new UserResponse(user); } // 회원정보 수정 @PutMapping("/{userId}") public UserResponse updateUserInfo(@PathVariable Long userId, @RequestBody UpdateUserInfoRequest updateUserInfoRequest) { - User user = userService.updateUserInfo(userId, updateUserInfoRequest); + User user = userService.updateUserInfo(updateUserInfoRequest.toEntity(userId)); return new UserResponse(user); } diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java b/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java index f130d8d..cd902df 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java @@ -1,8 +1,6 @@ package org.bbaemin.user.service; import lombok.RequiredArgsConstructor; -import org.bbaemin.user.controller.request.JoinRequest; -import org.bbaemin.user.controller.request.UpdateUserInfoRequest; import org.bbaemin.user.repository.UserRepository; import org.bbaemin.user.vo.User; import org.springframework.stereotype.Service; @@ -23,13 +21,11 @@ public User getUser(Long userId) { return userRepository.findById(userId); } - public User join(JoinRequest joinRequest) { - User user = joinRequest.toEntity(); + public User join(User user) { return userRepository.insert(user); } - public User updateUserInfo(Long userId, UpdateUserInfoRequest updateUserInfoRequest) { - User user = updateUserInfoRequest.toEntity(userId); + public User updateUserInfo(User user) { return userRepository.update(user); } diff --git a/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java b/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java index e87639c..545aaf3 100644 --- a/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java +++ b/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java @@ -47,7 +47,7 @@ void join() { .passwordConfirm("password") .phoneNumber("010-2233-4455") .build(); - User saved = userService.join(joinRequest); + User saved = userService.join(joinRequest.toEntity()); // then User user = userService.getUser(saved.getUserId()); @@ -68,7 +68,7 @@ void updateUserInfo() { .passwordConfirm("password") .phoneNumber("010-2233-4455") .build(); - User user = userService.join(joinRequest); + User user = userService.join(joinRequest.toEntity()); // when UpdateUserInfoRequest updateUserInfoRequest = UpdateUserInfoRequest.builder() @@ -76,7 +76,7 @@ void updateUserInfo() { .image("image_path") .phoneNumber("010-2233-4456") .build(); - User updated = userService.updateUserInfo(user.getUserId(), updateUserInfoRequest); + User updated = userService.updateUserInfo(updateUserInfoRequest.toEntity(user.getUserId())); // then assertAll( @@ -100,11 +100,11 @@ void quit() { .passwordConfirm("password") .phoneNumber("010-2233-4455") .build(); - User user = userService.join(joinRequest); + User user = userService.join(joinRequest.toEntity()); // when userService.quit(user.getUserId()); // then assertThat(user.isDeleted()).isTrue(); } -} \ No newline at end of file +} From 72f3ec80b8e77d9f9124cb67b3c11d6f5407befd Mon Sep 17 00:00:00 2001 From: "DESKTOP-0N7JBUG\\user" Date: Sun, 5 Feb 2023 18:12:21 +0900 Subject: [PATCH 3/6] =?UTF-8?q?Entity=EC=97=90=EC=84=9C=20=EB=B9=84?= =?UTF-8?q?=EC=A6=88=EB=8B=88=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/bbaemin/user/service/UserService.java | 3 --- bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java | 4 ---- 2 files changed, 7 deletions(-) diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java b/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java index cd902df..8c20833 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/service/UserService.java @@ -30,9 +30,6 @@ public User updateUserInfo(User user) { } public void quit(Long userId) { -// User user = userRepository.findById(userId); -// user.quit(); -// userRepository.update(user); userRepository.updateUserDeleted(userId); } diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java b/bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java index 5406494..255d6b2 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/vo/User.java @@ -25,10 +25,6 @@ private User(Long userId, String email, String nickname, String image, String pa this.phoneNumber = phoneNumber; } - public void quit() { - this.deleted = true; - } - public void setUserId(Long userId) { this.userId = userId; } From 070caa1b08ba303472eaa5e998bbd6737d14ab06 Mon Sep 17 00:00:00 2001 From: "DESKTOP-0N7JBUG\\user" Date: Sun, 5 Feb 2023 18:15:38 +0900 Subject: [PATCH 4/6] =?UTF-8?q?UserResponse=20=ED=95=84=EB=93=9C=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/response/UserResponseTest.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 bbaemin-api/src/test/java/org/bbaemin/user/controller/response/UserResponseTest.java diff --git a/bbaemin-api/src/test/java/org/bbaemin/user/controller/response/UserResponseTest.java b/bbaemin-api/src/test/java/org/bbaemin/user/controller/response/UserResponseTest.java new file mode 100644 index 0000000..d271401 --- /dev/null +++ b/bbaemin-api/src/test/java/org/bbaemin/user/controller/response/UserResponseTest.java @@ -0,0 +1,44 @@ +package org.bbaemin.user.controller.response; + +import org.bbaemin.user.vo.User; +import org.junit.jupiter.api.Test; +import org.springframework.test.util.ReflectionTestUtils; + +import java.lang.reflect.Field; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class UserResponseTest { + + @Test + public void test() { + + User user = User.builder() + .userId(1L) + .email("user1@email.com") + .nickname("user1") + .image(null) + .phoneNumber("010-1234-5678") + .build(); + UserResponse response = new UserResponse(user); + Field[] userClassFields = User.class.getDeclaredFields(); + Field[] fields = UserResponse.class.getDeclaredFields(); + // TODO - 필드를 어떻게 빠짐없이 체크할까 + // + 필드 이름이 다를 때는? + for (Field field : fields) { +/* + field.setAccessible(true); + Field userClassField = Arrays.stream(userClassFields) + .filter(f -> f.getName().equals(field.getName())) + .findAny().orElseThrow(RuntimeException::new); + userClassField.setAccessible(true); + assertEquals(field.get(response), userClassField.get(user));*/ + + assertEquals(ReflectionTestUtils.getField(response, field.getName()), + ReflectionTestUtils.getField(user, field.getName())); + } + + } + + +} From 7614770b9682c647bb35b3896849a9ca7dcb7dc7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-0N7JBUG\\user" Date: Sun, 5 Feb 2023 19:55:11 +0900 Subject: [PATCH 5/6] =?UTF-8?q?UserMemoryRepository=20-=20id=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20AtomicLong=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/repository/UserMemoryRepository.java | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java index 97b67e3..5ff2830 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java @@ -7,23 +7,28 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; @Component public class UserMemoryRepository implements UserRepository { private static final Map map = new ConcurrentHashMap<>(); - private static Long id = 0L; + private static final AtomicLong id = new AtomicLong(0L); + + public static AtomicLong getId() { + return id; + } static { - map.put(++id, User.builder() - .userId(id) + map.put(getId().incrementAndGet(), User.builder() + .userId(getId().get()) .email("user1@email.com") .nickname("user1") .image(null) .phoneNumber("010-1234-5678") .build()); - map.put(++id, User.builder() - .userId(id) + map.put(getId().incrementAndGet(), User.builder() + .userId(getId().get()) .email("user2@email.com") .nickname("user2") .image(null) @@ -47,17 +52,9 @@ public User findById(Long userId) { @Override public User insert(User user) { - Long userId = ++id; + Long userId = getId().incrementAndGet(); user.setUserId(userId); map.put(userId, user); - /* - map.put(userId, User.builder() - .userId(userId) - .email(user.getEmail()) - .nickname(user.getNickname()) - .image(user.getImage()) - .phoneNumber(user.getPhoneNumber()) - .build());*/ return user; } From 8d620076b9cc664e5e47730e50918b115cf3023f Mon Sep 17 00:00:00 2001 From: "DESKTOP-0N7JBUG\\user" Date: Thu, 16 Feb 2023 21:39:05 +0900 Subject: [PATCH 6/6] =?UTF-8?q?toEntity=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserController.java | 17 ++- .../user/controller/request/JoinRequest.java | 13 +-- .../request/UpdateUserInfoRequest.java | 10 -- .../user/repository/UserMemoryRepository.java | 73 ------------ .../user/repository/UserRepository.java | 62 +++++++++- .../bbaemin/user/service/UserServiceTest.java | 110 ------------------ 6 files changed, 73 insertions(+), 212 deletions(-) delete mode 100644 bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java delete mode 100644 bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java index ab7e937..d330164 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/UserController.java @@ -35,14 +35,27 @@ public UserResponse getUser(@PathVariable Long userId) { // 회원 등록 @PostMapping public UserResponse join(@RequestBody JoinRequest joinRequest) { - User user = userService.join(joinRequest.toEntity()); + User user = userService.join( + User.builder() + .email(joinRequest.getEmail()) + .nickname(joinRequest.getNickname()) + .image(joinRequest.getImage()) + .password(joinRequest.getPassword()) + .phoneNumber(joinRequest.getPhoneNumber()) + .build()); return new UserResponse(user); } // 회원정보 수정 @PutMapping("/{userId}") public UserResponse updateUserInfo(@PathVariable Long userId, @RequestBody UpdateUserInfoRequest updateUserInfoRequest) { - User user = userService.updateUserInfo(updateUserInfoRequest.toEntity(userId)); + User user = userService.updateUserInfo( + User.builder() + .userId(userId) + .nickname(updateUserInfoRequest.getNickname()) + .image(updateUserInfoRequest.getImage()) + .phoneNumber(updateUserInfoRequest.getPhoneNumber()) + .build()); return new UserResponse(user); } diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java index c3b4b77..1c5a383 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/JoinRequest.java @@ -1,8 +1,9 @@ package org.bbaemin.user.controller.request; import lombok.Builder; -import org.bbaemin.user.vo.User; +import lombok.Getter; +@Getter public class JoinRequest { private String email; @@ -15,16 +16,6 @@ public class JoinRequest { private String phoneNumber; - public User toEntity() { - return User.builder() - .email(email) - .nickname(nickname) - .image(image) - .password(password) - .phoneNumber(phoneNumber) - .build(); - } - @Builder private JoinRequest(String email, String nickname, String image, String password, String passwordConfirm, String phoneNumber) { this.email = email; diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java index ceac492..0114e2d 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/controller/request/UpdateUserInfoRequest.java @@ -2,7 +2,6 @@ import lombok.Builder; import lombok.Getter; -import org.bbaemin.user.vo.User; @Getter public class UpdateUserInfoRequest { @@ -11,15 +10,6 @@ public class UpdateUserInfoRequest { private String image; private String phoneNumber; - public User toEntity(Long userId) { - return User.builder() - .userId(userId) - .nickname(nickname) - .image(image) - .phoneNumber(phoneNumber) - .build(); - } - @Builder private UpdateUserInfoRequest(String nickname, String image, String phoneNumber) { this.nickname = nickname; diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java deleted file mode 100644 index 5ff2830..0000000 --- a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserMemoryRepository.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.bbaemin.user.repository; - -import org.bbaemin.user.vo.User; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicLong; - -@Component -public class UserMemoryRepository implements UserRepository { - - private static final Map map = new ConcurrentHashMap<>(); - private static final AtomicLong id = new AtomicLong(0L); - - public static AtomicLong getId() { - return id; - } - - static { - map.put(getId().incrementAndGet(), User.builder() - .userId(getId().get()) - .email("user1@email.com") - .nickname("user1") - .image(null) - .phoneNumber("010-1234-5678") - .build()); - map.put(getId().incrementAndGet(), User.builder() - .userId(getId().get()) - .email("user2@email.com") - .nickname("user2") - .image(null) - .phoneNumber("010-1111-2222") - .build()); - } - - public static void clear() { - map.clear(); - } - - @Override - public List findAll() { - return new ArrayList<>(map.values()); - } - - @Override - public User findById(Long userId) { - return map.get(userId); - } - - @Override - public User insert(User user) { - Long userId = getId().incrementAndGet(); - user.setUserId(userId); - map.put(userId, user); - return user; - } - - @Override - public User update(User user) { - map.put(user.getUserId(), user); - return user; - } - - @Override - public void updateUserDeleted(Long userId) { - User user = map.get(userId); - user.setDeleted(true); - map.put(userId, user); - } -} diff --git a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java index 69af070..aae0c90 100644 --- a/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java +++ b/bbaemin-api/src/main/java/org/bbaemin/user/repository/UserRepository.java @@ -1,18 +1,68 @@ package org.bbaemin.user.repository; import org.bbaemin.user.vo.User; +import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; -public interface UserRepository { +@Component +public class UserRepository { - List findAll(); + private static final Map map = new ConcurrentHashMap<>(); + private static final AtomicLong id = new AtomicLong(0L); - User findById(Long userId); + public static AtomicLong getId() { + return id; + } - User insert(User user); + static { + map.put(getId().incrementAndGet(), User.builder() + .userId(getId().get()) + .email("user1@email.com") + .nickname("user1") + .image(null) + .phoneNumber("010-1234-5678") + .build()); + map.put(getId().incrementAndGet(), User.builder() + .userId(getId().get()) + .email("user2@email.com") + .nickname("user2") + .image(null) + .phoneNumber("010-1111-2222") + .build()); + } - User update(User user); + public static void clear() { + map.clear(); + } - void updateUserDeleted(Long userId); + public List findAll() { + return new ArrayList<>(map.values()); + } + + public User findById(Long userId) { + return map.get(userId); + } + + public User insert(User user) { + Long userId = getId().incrementAndGet(); + user.setUserId(userId); + map.put(userId, user); + return user; + } + + public User update(User user) { + map.put(user.getUserId(), user); + return user; + } + + public void updateUserDeleted(Long userId) { + User user = map.get(userId); + user.setDeleted(true); + map.put(userId, user); + } } diff --git a/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java b/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java deleted file mode 100644 index 545aaf3..0000000 --- a/bbaemin-api/src/test/java/org/bbaemin/user/service/UserServiceTest.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.bbaemin.user.service; - -import org.bbaemin.user.controller.request.JoinRequest; -import org.bbaemin.user.controller.request.UpdateUserInfoRequest; -import org.bbaemin.user.controller.response.UserResponse; -import org.bbaemin.user.repository.UserMemoryRepository; -import org.bbaemin.user.repository.UserRepository; -import org.bbaemin.user.vo.User; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - -class UserServiceTest { - - UserRepository userRepository = new UserMemoryRepository(); - UserService userService = new UserService(userRepository); - - @BeforeEach - void init() { - UserMemoryRepository.clear(); - } -/* - @Test - void getUser() { - // given - // when - User user = userService.getUser(1L); - // then - assertThat(user.getEmail()).isEqualTo("user1@email.com"); - assertThat(user.getNickname()).isEqualTo("user1"); - assertThat(user.getImage()).isEqualTo(null); - assertThat(user.getPhoneNumber()).isEqualTo("010-1234-5678"); - }*/ - - @Test - void join() { - - // given - // when - JoinRequest joinRequest = JoinRequest.builder() - .email("user@email.com") - .nickname("user") - .image(null) - .password("password") - .passwordConfirm("password") - .phoneNumber("010-2233-4455") - .build(); - User saved = userService.join(joinRequest.toEntity()); - - // then - User user = userService.getUser(saved.getUserId()); - assertThat(saved).isEqualTo(user); - System.out.println(user); - System.out.println(new UserResponse(user)); - } - - @Test - void updateUserInfo() { - - // given - JoinRequest joinRequest = JoinRequest.builder() - .email("user@email.com") - .nickname("user") - .image(null) - .password("password") - .passwordConfirm("password") - .phoneNumber("010-2233-4455") - .build(); - User user = userService.join(joinRequest.toEntity()); - - // when - UpdateUserInfoRequest updateUserInfoRequest = UpdateUserInfoRequest.builder() - .nickname("new_user") - .image("image_path") - .phoneNumber("010-2233-4456") - .build(); - User updated = userService.updateUserInfo(updateUserInfoRequest.toEntity(user.getUserId())); - - // then - assertAll( - () -> assertThat(updated.getUserId()).isEqualTo(user.getUserId()), - () -> assertThat(updated.getNickname()).isEqualTo(updateUserInfoRequest.getNickname()), - () -> assertThat(updated.getImage()).isEqualTo(updateUserInfoRequest.getImage()), - () -> assertThat(updated.getPhoneNumber()).isEqualTo(updateUserInfoRequest.getPhoneNumber()) - ); - - } - - @Test - void quit() { - - // given - JoinRequest joinRequest = JoinRequest.builder() - .email("user@email.com") - .nickname("user") - .image(null) - .password("password") - .passwordConfirm("password") - .phoneNumber("010-2233-4455") - .build(); - User user = userService.join(joinRequest.toEntity()); - - // when - userService.quit(user.getUserId()); - // then - assertThat(user.isDeleted()).isTrue(); - } -}