@@ -4,7 +4,9 @@ import codel.member.business.SignupService
44import codel.member.domain.Member
55import codel.member.domain.MemberStatus
66import codel.member.domain.OauthType
7+ import codel.member.domain.Profile
78import codel.member.infrastructure.MemberJpaRepository
9+ import codel.notification.business.IAsyncNotificationService
810import org.junit.jupiter.api.Assertions.assertEquals
911import org.junit.jupiter.api.BeforeEach
1012import org.junit.jupiter.api.DisplayName
@@ -13,49 +15,63 @@ import org.mockito.ArgumentCaptor
1315import org.mockito.Mockito.*
1416import org.springframework.http.HttpStatus
1517import org.springframework.mock.web.MockMultipartFile
18+ import java.time.LocalDate
1619
1720class PreVerificationStrategyTest {
1821
1922 private lateinit var signupService: SignupService
2023 private lateinit var memberJpaRepository: MemberJpaRepository
24+ private lateinit var asyncNotificationService: IAsyncNotificationService
2125 private lateinit var strategy: PreVerificationStrategy
2226
2327 @BeforeEach
2428 fun setUp () {
2529 signupService = mock(SignupService ::class .java)
2630 memberJpaRepository = mock(MemberJpaRepository ::class .java)
27- strategy = PreVerificationStrategy (signupService, memberJpaRepository)
31+ asyncNotificationService = mock(IAsyncNotificationService ::class .java)
32+ strategy = PreVerificationStrategy (signupService, memberJpaRepository, asyncNotificationService)
2833 }
2934
30- @DisplayName(" PERSONALITY_COMPLETED 상태에서는 히든 이미지 등록 후 HIDDEN_COMPLETED 상태로 변경한다" )
35+ @DisplayName(" PERSONALITY_COMPLETED 상태에서는 히든 이미지 등록 후 PENDING 상태로 변경한다" )
3136 @Test
32- fun handleHiddenImages_personalityCompleted_changeToHiddenCompleted () {
37+ fun handleHiddenImages_personalityCompleted_changeToPending () {
3338 // given
39+ val profile = Profile (
40+ id = 1L ,
41+ codeName = " 테스트유저" ,
42+ bigCity = " 서울" ,
43+ smallCity = " 강남구" ,
44+ birthDate = LocalDate .of(1990 , 1 , 1 )
45+ )
46+
3447 val member = Member (
3548 id = 1L ,
3649 oauthId = " test-oauth-id" ,
3750 oauthType = OauthType .KAKAO ,
3851 memberStatus = MemberStatus .PERSONALITY_COMPLETED ,
39- email = " test@test.com"
52+ email = " test@test.com" ,
53+ profile = profile
4054 )
4155
56+ profile.member = member
57+
4258 val images = listOf (
4359 MockMultipartFile (" image1" , " test1.jpg" , " image/jpeg" , " test1" .toByteArray()),
4460 MockMultipartFile (" image2" , " test2.jpg" , " image/jpeg" , " test2" .toByteArray()),
4561 MockMultipartFile (" image3" , " test3.jpg" , " image/jpeg" , " test3" .toByteArray())
4662 )
4763
64+ // memberJpaRepository.findByMemberId가 member를 반환하도록 mock 설정
65+ `when `(memberJpaRepository.findByMemberId(1L )).thenReturn(member)
66+
4867 // when
4968 val response = strategy.handleHiddenImages(member, images)
5069
5170 // then
5271 verify(signupService, times(1 )).registerHiddenImages(member, images)
72+ verify(memberJpaRepository, times(1 )).findByMemberId(1L )
5373
54- val memberCaptor = ArgumentCaptor .forClass(Member ::class .java)
55- verify(memberJpaRepository, times(1 )).save(memberCaptor.capture())
56-
57- val savedMember = memberCaptor.value
58- assertEquals(MemberStatus .HIDDEN_COMPLETED , savedMember.memberStatus)
74+ assertEquals(MemberStatus .PENDING , member.memberStatus)
5975 assertEquals(HttpStatus .OK , response.statusCode)
6076 }
6177}
0 commit comments