Skip to content

Commit 3746ff3

Browse files
committed
feat: 사용자 등록 시 닉네임 입력 기능 추가
1 parent 20da523 commit 3746ff3

File tree

4 files changed

+76
-5
lines changed

4 files changed

+76
-5
lines changed

src/main/java/com/server/domain/user/controller/UserController.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ public ApiResponseDto<String> deleteUser(@AuthenticationPrincipal User user) {
5555
@PreAuthorize("hasRole('USER') or hasRole('ADMIN')")
5656
@ResponseStatus(HttpStatus.OK)
5757
@PostMapping("/me")
58-
@Operation(summary = "유저 등록", description = "유저 약관 동의 업데이트")
58+
@Operation(summary = "유저 등록", description = "유저 약관 동의 및 닉네임 업데이트")
5959
public ApiResponseDto<String> registerUser(@AuthenticationPrincipal User user,
6060
@RequestBody RegisterUserInDto body) {
61-
String nickname = userService.registerUser(user, body.getTermAgreements());
61+
String nickname =
62+
userService.registerUser(user, body.getTermAgreements(), body.getNickname());
6263
return ApiResponseDto.success(HttpStatus.OK.value(),
63-
String.format("User %s term agreements updated successfully", nickname));
64+
String.format("User %s information updated successfully", nickname));
6465
}
6566

6667
// 계정 관리 (복구 또는 삭제)

src/main/java/com/server/domain/user/dto/RegisterUserInDto.java

+1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@
1111
@NoArgsConstructor
1212
public class RegisterUserInDto {
1313
private Map<Long, Boolean> termAgreements; // Key: Term ID, Value: Agreed or not
14+
private String nickname; // 사용자 닉네임
1415
}

src/main/java/com/server/domain/user/service/UserService.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private boolean areAllRequiredTermsAgreed(User user) {
7575
}
7676

7777
@Transactional
78-
public String registerUser(User user, Map<Long, Boolean> termAgreements) {
78+
public String registerUser(User user, Map<Long, Boolean> termAgreements, String nickname) {
7979
if (user == null) {
8080
throw new BusinessException(UserErrorCode.NOT_FOUND);
8181
}
@@ -85,6 +85,12 @@ public String registerUser(User user, Map<Long, Boolean> termAgreements) {
8585
throw new BusinessException(UserErrorCode.INVALID_PARAMETER);
8686
}
8787

88+
// 닉네임 설정 (제공된 경우)
89+
if (nickname != null && !nickname.trim().isEmpty()) {
90+
user.setNickname(nickname);
91+
log.debug("Updated nickname for user ID {}: {}", user.getId(), nickname);
92+
}
93+
8894
// Update each term agreement based on the provided term ID and boolean value
8995
for (TermAgreement agreement : user.getTermAgreements()) {
9096
Long termId = agreement.getTerm().getId();
@@ -106,10 +112,15 @@ public String registerUser(User user, Map<Long, Boolean> termAgreements) {
106112
}
107113

108114
userRepository.save(user);
109-
log.info("Updated term agreements for user: {}", user.getNickname());
115+
log.info("Updated user information and term agreements for user: {}", user.getNickname());
110116
return user.getNickname();
111117
}
112118

119+
@Transactional
120+
public String registerUser(User user, Map<Long, Boolean> termAgreements) {
121+
return registerUser(user, termAgreements, null);
122+
}
123+
113124
@Transactional
114125
public String restoreAccount(Long userId) {
115126
User user = userRepository.findById(userId)

src/test/java/com/server/domain/user/service/UserServiceTest.java

+58
Original file line numberDiff line numberDiff line change
@@ -249,4 +249,62 @@ void saveRefreshTokenTest() {
249249
assertEquals("newRefreshToken", user.getRefreshToken());
250250
verify(userRepository).save(user);
251251
}
252+
253+
@Test
254+
@DisplayName("Register user test with nickname update")
255+
void registerUserWithNicknameTest() {
256+
// Setup
257+
Map<Long, Boolean> termAgreements = new HashMap<>();
258+
termAgreements.put(1L, true); // Required term
259+
termAgreements.put(2L, false); // Optional term
260+
String newNickname = "newNickname";
261+
262+
// Call the method
263+
String result = userService.registerUser(user, termAgreements, newNickname);
264+
265+
// Verify the results
266+
assertEquals(newNickname, result);
267+
assertEquals(newNickname, user.getNickname());
268+
verify(termAgreementRepository, times(2)).save(any(TermAgreement.class));
269+
verify(userRepository).save(user);
270+
271+
// Verify term agreements were updated
272+
assertTrue(user.getTermAgreements().get(0).isAgreed());
273+
assertFalse(user.getTermAgreements().get(1).isAgreed());
274+
}
275+
276+
@Test
277+
@DisplayName("Register user test with empty nickname")
278+
void registerUserWithEmptyNicknameTest() {
279+
// Setup
280+
Map<Long, Boolean> termAgreements = new HashMap<>();
281+
termAgreements.put(1L, true); // Required term
282+
String originalNickname = user.getNickname();
283+
String emptyNickname = " ";
284+
285+
// Call the method
286+
String result = userService.registerUser(user, termAgreements, emptyNickname);
287+
288+
// Verify that the nickname remains unchanged
289+
assertEquals(originalNickname, result);
290+
assertEquals(originalNickname, user.getNickname());
291+
verify(userRepository).save(user);
292+
}
293+
294+
@Test
295+
@DisplayName("Register user test with null nickname")
296+
void registerUserWithNullNicknameTest() {
297+
// Setup
298+
Map<Long, Boolean> termAgreements = new HashMap<>();
299+
termAgreements.put(1L, true); // Required term
300+
String originalNickname = user.getNickname();
301+
302+
// Call the method
303+
String result = userService.registerUser(user, termAgreements, null);
304+
305+
// Verify that the nickname remains unchanged
306+
assertEquals(originalNickname, result);
307+
assertEquals(originalNickname, user.getNickname());
308+
verify(userRepository).save(user);
309+
}
252310
}

0 commit comments

Comments
 (0)