44import static org .junit .jupiter .api .Assertions .assertAll ;
55import static org .junit .jupiter .api .Assertions .assertThrows ;
66
7- import eatda .enums .InterestArea ;
87import eatda .exception .BusinessErrorCode ;
98import eatda .exception .BusinessException ;
109import org .junit .jupiter .api .DisplayName ;
1110import org .junit .jupiter .api .Nested ;
1211import org .junit .jupiter .api .Test ;
12+ import org .junit .jupiter .params .ParameterizedTest ;
13+ import org .junit .jupiter .params .provider .NullAndEmptySource ;
14+ import org .junit .jupiter .params .provider .ValueSource ;
1315
1416class MemberTest {
1517
@@ -18,13 +20,15 @@ class MemberTest {
1820 class CreateOauthMember {
1921
2022 @ Test
21- void socialId와_nickname만으로_생성_시_나머지_필드는_null_상태이다 () {
23+ void socialId_email_nickname만으로_생성_시_나머지_필드는_null_상태이다 () {
2224 String socialId = "oauth-user-id" ;
25+ String email =
"[email protected] " ;
2326
24- Member member = new Member (socialId , "nickname" );
27+ Member member = new Member (socialId , email , "nickname" );
2528
2629 assertAll (
2730 () -> assertThat (member .getSocialId ()).isEqualTo (socialId ),
31+ () -> assertThat (member .getEmail ()).isEqualTo (email ),
2832 () -> assertThat (member .getNickname ()).isNotNull (),
2933 () -> assertThat (member .getMobilePhoneNumber ()).isNull (),
3034 () -> assertThat (member .getOptInMarketing ()).isNull ()
@@ -34,11 +38,25 @@ class CreateOauthMember {
3438 @ Test
3539 void socialId가_null이면_예외가_발생한다 () {
3640 String socialId = null ;
41+ String email =
"[email protected] " ;
3742
38- BusinessException exception = assertThrows (BusinessException .class , () -> new Member (socialId , "nickname" ));
43+ BusinessException exception = assertThrows (BusinessException .class ,
44+ () -> new Member (socialId , email , "nickname" ));
3945
4046 assertThat (exception .getErrorCode ()).isEqualTo (BusinessErrorCode .INVALID_SOCIAL_ID );
4147 }
48+
49+ @ ParameterizedTest
50+ @ NullAndEmptySource
51+ @ ValueSource (
strings = {
"abc.com" ,
"invalid-email" ,
"[email protected] " ,
"@example.com" })
52+ void email이_null이거나_유효하지_않으면_예외가_발생한다 (String invalidEmail ) {
53+ String socialId = "oauth-user-id" ;
54+
55+ BusinessException exception = assertThrows (BusinessException .class ,
56+ () -> new Member (socialId , invalidEmail , "nickname" ));
57+
58+ assertThat (exception .getErrorCode ()).isEqualTo (BusinessErrorCode .INVALID_EMAIL );
59+ }
4260 }
4361
4462 @ Nested
@@ -48,14 +66,16 @@ class CreateMemberTest {
4866 @ Test
4967 void 모든_정보가_정상적일_때_회원을_생성한다 () {
5068 String socialId = "test-social-id-123" ;
69+ String email =
"[email protected] " ;
5170 String nickname = "맛있는녀석들-32" ;
5271 String mobilePhoneNumber = "01012345678" ;
5372 Boolean optInMarketing = true ;
5473
55- Member member = new Member (socialId , nickname , mobilePhoneNumber , optInMarketing );
74+ Member member = new Member (socialId , email , nickname , mobilePhoneNumber , optInMarketing );
5675
5776 assertAll (
5877 () -> assertThat (member .getSocialId ()).isEqualTo (socialId ),
78+ () -> assertThat (member .getEmail ()).isEqualTo (email ),
5979 () -> assertThat (member .getNickname ()).isEqualTo (nickname ),
6080 () -> assertThat (member .getMobilePhoneNumber ().getValue ()).isEqualTo (mobilePhoneNumber ),
6181 () -> assertThat (member .isOptInMarketing ()).isTrue ()
@@ -65,11 +85,12 @@ class CreateMemberTest {
6585 @ Test
6686 void 선택적_필드가_null이어도_멤버를_생성한다 () {
6787 String socialId = "test-social-id-123" ;
88+ String email =
"[email protected] " ;
6889 String nickname = null ;
6990 String mobilePhoneNumber = null ;
7091 Boolean optInMarketing = false ;
7192
72- Member member = new Member (socialId , nickname , mobilePhoneNumber , optInMarketing );
93+ Member member = new Member (socialId , email , nickname , mobilePhoneNumber , optInMarketing );
7394
7495 assertAll (
7596 () -> assertThat (member .getNickname ()).isNull (),
@@ -81,13 +102,13 @@ class CreateMemberTest {
81102 @ Test
82103 void 가입_완료_시_마케팅_동의_여부가_null이면_예외를_던진다 () {
83104 String socialId = "test-social-id-123" ;
105+ String email =
"[email protected] " ;
84106 String nickname = "맛있는녀석들-32" ;
85107 String mobilePhoneNumber = "01012345678" ;
86- String interestArea = "강남구" ;
87108 Boolean optInMarketing = null ;
88109
89110 BusinessException exception = assertThrows (BusinessException .class ,
90- () -> new Member (socialId , nickname , mobilePhoneNumber , optInMarketing ));
111+ () -> new Member (socialId , email , nickname , mobilePhoneNumber , optInMarketing ));
91112
92113 assertThat (exception .getErrorCode ()).isEqualTo (BusinessErrorCode .INVALID_MARKETING_CONSENT );
93114 }
@@ -98,7 +119,7 @@ class UpdateMember {
98119
99120 @ Test
100121 void 회원_정보를_정상적으로_수정한다 () {
101- Member member = new Member ("social-id" , "nickname" );
122+ Member member =
new Member (
"social-id" ,
"[email protected] " , " nickname");
102123 Member updatedMember = new Member ("new-nickname" , "01012345678" , true );
103124
104125 member .update (updatedMember );
@@ -116,7 +137,7 @@ class IsSameNicknameTest {
116137
117138 @ Test
118139 void 동일한_닉네임을_비교하면_true를_반환한다 () {
119- Member member = new Member ("social-id" , "nickname" );
140+ Member member =
new Member (
"social-id" ,
"[email protected] " , " nickname");
120141
121142 boolean result = member .isSameNickname ("nickname" );
122143
@@ -125,7 +146,7 @@ class IsSameNicknameTest {
125146
126147 @ Test
127148 void 다른_닉네임을_비교하면_false를_반환한다 () {
128- Member member = new Member ("social-id" , "nickname" );
149+ Member member =
new Member (
"social-id" ,
"[email protected] " , " nickname");
129150
130151 boolean result = member .isSameNickname ("different-nickname" );
131152
@@ -138,7 +159,7 @@ class IsSameMobilePhoneNumberTest {
138159
139160 @ Test
140161 void 동일한_전화번호를_비교하면_true를_반환한다 () {
141- Member member = new Member ("social-id" , "nickname" , "01012345678" , true );
162+ Member member =
new Member (
"social-id" ,
"[email protected] " , " nickname",
"01012345678" ,
true );
142163
143164 boolean result = member .isSameMobilePhoneNumber ("01012345678" );
144165
@@ -147,7 +168,7 @@ class IsSameMobilePhoneNumberTest {
147168
148169 @ Test
149170 void 다른_전화번호를_비교하면_false를_반환한다 () {
150- Member member = new Member ("social-id" , "nickname" , "01012345678" , true );
171+ Member member =
new Member (
"social-id" ,
"[email protected] " , " nickname",
"01012345678" ,
true );
151172
152173 boolean result = member .isSameMobilePhoneNumber ("01087654321" );
153174
0 commit comments