66import dmu .dasom .api .domain .member .entity .Member ;
77import dmu .dasom .api .domain .member .repository .MemberRepository ;
88import dmu .dasom .api .domain .member .service .MemberServiceImpl ;
9- import dmu .dasom .api .global . generation .service .GenerationService ;
9+ import dmu .dasom .api .domain . recruit .service .RecruitService ;
1010import org .junit .jupiter .api .DisplayName ;
1111import org .junit .jupiter .api .Test ;
1212import org .junit .jupiter .api .extension .ExtendWith ;
1313import org .mockito .InjectMocks ;
1414import org .mockito .Mock ;
1515import org .mockito .junit .jupiter .MockitoExtension ;
1616import org .springframework .security .crypto .bcrypt .BCryptPasswordEncoder ;
17+ import org .springframework .test .util .ReflectionTestUtils ;
1718
1819import java .util .Optional ;
1920
@@ -30,7 +31,7 @@ class MemberServiceTest {
3031 MemberRepository memberRepository ;
3132
3233 @ Mock
33- private GenerationService generationService ;
34+ RecruitService recruitService ; // RecruitService 주입
3435
3536 @ InjectMocks
3637 private MemberServiceImpl memberService ;
@@ -96,24 +97,49 @@ void checkByEmail_false() {
9697 assertFalse (result );
9798 }
9899
100+
99101 @ Test
100- @ DisplayName ("회원가입 - 성공" )
101- void signUp_success () {
102- // given
103- SignupRequestDto request = mock (SignupRequestDto .class );
104- when (
request .
getEmail ()).
thenReturn (
"[email protected] " );
105- when (request .getPassword ()).thenReturn ("password" );
102+ @ DisplayName ("회원가입 - 기수 선택값 전달 시 사용" )
103+ void signUp_withGenerationProvided () {
104+ // 실제 DTO 객체 사용
105+ SignupRequestDto request = new SignupRequestDto ();
106+ // Reflection 또는 생성자/Setter로 값 설정
107+ ReflectionTestUtils .
setField (
request ,
"email" ,
"[email protected] " );
108+ ReflectionTestUtils .setField (request , "password" , "password" );
109+ ReflectionTestUtils .setField (request , "generation" , "35기" );
110+
106111 when (encoder .encode ("password" )).thenReturn ("encodedPassword" );
107112 when (
memberRepository .
existsByEmail (
"[email protected] " )).
thenReturn (
false );
108- when (generationService .getCurrentGeneration ()).thenReturn ("34기" );
109- // when
113+
110114 memberService .signUp (request );
111115
112- // then
113- verify (memberRepository , times (1 )).save (any ());
114- verify (generationService , times (1 )).getCurrentGeneration ();
116+ verify (memberRepository , times (1 )).save (argThat (member ->
117+ "35기" .equals (member .getGeneration ())
118+ ));
119+ verify (recruitService , never ()).getCurrentGeneration ();
120+ }
121+
122+ @ Test
123+ @ DisplayName ("회원가입 - 기수 선택값 없으면 기본값 사용" )
124+ void signUp_withGenerationDefault () {
125+ SignupRequestDto request = new SignupRequestDto ();
126+ ReflectionTestUtils .
setField (
request ,
"email" ,
"[email protected] " );
127+ ReflectionTestUtils .setField (request , "password" , "password" );
128+ ReflectionTestUtils .setField (request , "generation" , null );
129+
130+ when (encoder .encode ("password" )).thenReturn ("encodedPassword" );
131+ when (
memberRepository .
existsByEmail (
"[email protected] " )).
thenReturn (
false );
132+ when (recruitService .getCurrentGeneration ()).thenReturn ("34기" );
133+
134+ memberService .signUp (request );
135+
136+ verify (memberRepository , times (1 )).save (argThat (member ->
137+ "34기" .equals (member .getGeneration ())
138+ ));
139+ verify (recruitService , times (1 )).getCurrentGeneration ();
115140 }
116141
142+
117143 @ Test
118144 @ DisplayName ("회원가입 - 실패" )
119145 void signUp_fail () {
0 commit comments