Skip to content

Commit 3cc44ca

Browse files
committed
feat: 닉네임, 핸드폰 번호 검증 기능 구현
1 parent b87a71f commit 3cc44ca

File tree

3 files changed

+92
-6
lines changed

3 files changed

+92
-6
lines changed

src/main/java/timeeat/service/service/MemberService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ public class MemberService {
1616

1717
private final MemberRepository memberRepository;
1818

19+
@Transactional(readOnly = true)
20+
public void validateNickname(String nickname, long memberId) {
21+
Member member = memberRepository.getById(memberId);
22+
validateNicknameNotDuplicate(member, nickname);
23+
}
24+
25+
@Transactional(readOnly = true)
26+
public void validatePhoneNumber(String phoneNumber, long memberId) {
27+
Member member = memberRepository.getById(memberId);
28+
validatePhoneNumberNotDuplicate(member, phoneNumber);
29+
}
30+
1931
@Transactional
2032
public MemberResponse update(long memberId, MemberUpdateRequest request) {
2133
Member member = memberRepository.getById(memberId);

src/test/java/timeeat/fixture/MemberGenerator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import org.springframework.stereotype.Component;
44
import timeeat.domain.member.Member;
5+
import timeeat.enums.InterestArea;
56
import timeeat.repository.member.MemberRepository;
67

78
@Component
89
public class MemberGenerator {
910

11+
private static final String DEFAULT_INTEREST_AREA = InterestArea.SEONGBUK.getAreaName();
12+
1013
private final MemberRepository memberRepository;
1114

1215
public MemberGenerator(MemberRepository memberRepository) {
@@ -20,4 +23,8 @@ public Member generate(String socialId) {
2023
public Member generate(String socialId, String nickname) {
2124
return memberRepository.save(new Member(socialId, nickname));
2225
}
26+
27+
public Member generateRegisteredMember(String socialId, String nickname, String phoneNumber) {
28+
return memberRepository.save(new Member(socialId, nickname, phoneNumber, DEFAULT_INTEREST_AREA, true));
29+
}
2330
}

src/test/java/timeeat/service/service/MemberServiceTest.java

Lines changed: 73 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package timeeat.service.service;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.assertj.core.api.Assertions.assertThatCode;
45
import static org.junit.jupiter.api.Assertions.assertAll;
56
import static org.junit.jupiter.api.Assertions.assertThrows;
67

@@ -19,6 +20,76 @@ class MemberServiceTest extends BaseServiceTest {
1920
@Autowired
2021
private MemberService memberService;
2122

23+
@Nested
24+
class ValidateNickname {
25+
26+
@Test
27+
void 중복되지_않은_닉네임이면_예외가_발생하지_않는다() {
28+
memberGenerator.generate("123", "nickname");
29+
Member member = memberGenerator.generate("456", "unique-nickname");
30+
String newNickname = "new-unique-nickname";
31+
32+
assertThatCode(() -> memberService.validateNickname(newNickname, member.getId()))
33+
.doesNotThrowAnyException();
34+
}
35+
36+
@Test
37+
void 자신의_기존_닉네임이면_예외가_발생하지_않는다() {
38+
Member member = memberGenerator.generate("123", "nickname");
39+
String newNickname = "nickname";
40+
41+
assertThatCode(() -> memberService.validateNickname(newNickname, member.getId()))
42+
.doesNotThrowAnyException();
43+
}
44+
45+
@Test
46+
void 중복된_닉네임이_있으면_예외가_발생한다() {
47+
memberGenerator.generate("123", "duplicate-nickname");
48+
Member member = memberGenerator.generate("456", "another-nickname");
49+
String newNickname = "duplicate-nickname";
50+
51+
BusinessException exception = assertThrows(BusinessException.class,
52+
() -> memberService.validateNickname(newNickname, member.getId()));
53+
54+
assertThat(exception.getErrorCode()).isEqualTo(BusinessErrorCode.DUPLICATE_NICKNAME);
55+
}
56+
}
57+
58+
@Nested
59+
class validatePhoneNumber {
60+
61+
@Test
62+
void 중복되지_않은_전화번호이면_예외가_발생하지_않는다() {
63+
memberGenerator.generate("123", "nickname");
64+
Member member = memberGenerator.generate("456", "unique-nickname");
65+
String newPhoneNumber = "01012345678";
66+
67+
assertThatCode(() -> memberService.validatePhoneNumber(newPhoneNumber, member.getId()))
68+
.doesNotThrowAnyException();
69+
}
70+
71+
@Test
72+
void 자신의_기존_전화번호이면_예외가_발생하지_않는다() {
73+
Member member = memberGenerator.generateRegisteredMember("123", "nickname", "01012345678");
74+
String newPhoneNumber = "01012345678";
75+
76+
assertThatCode(() -> memberService.validatePhoneNumber(newPhoneNumber, member.getId()))
77+
.doesNotThrowAnyException();
78+
}
79+
80+
@Test
81+
void 중복된_전화번호가_있으면_예외가_발생한다() {
82+
memberGenerator.generateRegisteredMember("123", "nickname1", "01012345678");
83+
Member member = memberGenerator.generateRegisteredMember("456", "nickname2", "01087654321");
84+
String newPhoneNumber = "01012345678";
85+
86+
BusinessException exception = assertThrows(BusinessException.class,
87+
() -> memberService.validatePhoneNumber(newPhoneNumber, member.getId()));
88+
89+
assertThat(exception.getErrorCode()).isEqualTo(BusinessErrorCode.DUPLICATE_PHONE_NUMBER);
90+
}
91+
}
92+
2293
@Nested
2394
class Update {
2495

@@ -66,9 +137,7 @@ class Update {
66137
@Test
67138
void 중복된_전화번호가_있으면_예외가_발생한다() {
68139
String phoneNumber = "01012345678";
69-
Member existMember = memberGenerator.generate("123", "nickname1");
70-
memberService.update(existMember.getId(),
71-
new MemberUpdateRequest("nickname1", phoneNumber, "성북구", true));
140+
memberGenerator.generateRegisteredMember("123", "nickname1", phoneNumber);
72141
Member updatedMember = memberGenerator.generate("456", "nickname2");
73142
MemberUpdateRequest request =
74143
new MemberUpdateRequest("new-nickname", phoneNumber, "성북구", true);
@@ -82,9 +151,7 @@ class Update {
82151
@Test
83152
void 기존의_전화번호와_동일하면_정상적으로_회원_정보가_수정된다() {
84153
String phoneNumber = "01012345678";
85-
Member member = memberGenerator.generate("123", "nickname1");
86-
memberService.update(member.getId(),
87-
new MemberUpdateRequest("nickname1", phoneNumber, "성북구", true));
154+
Member member = memberGenerator.generateRegisteredMember("123", "nickname1", phoneNumber);
88155
MemberUpdateRequest request =
89156
new MemberUpdateRequest("new-nickname", phoneNumber, "성북구", true);
90157

0 commit comments

Comments
 (0)