fix(member): 회원 차단을 요청 ID 단건만 적용한다
This commit is contained in:
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import kr.co.vividnext.sodalive.common.CountryContext
|
||||
import kr.co.vividnext.sodalive.i18n.LangContext
|
||||
import kr.co.vividnext.sodalive.i18n.SodaMessageSource
|
||||
import kr.co.vividnext.sodalive.member.auth.Auth
|
||||
import kr.co.vividnext.sodalive.member.auth.AuthRepository
|
||||
import kr.co.vividnext.sodalive.member.block.BlockMember
|
||||
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
|
||||
@@ -92,6 +93,59 @@ class MemberServiceCacheEvictionTest {
|
||||
Mockito.verifyNoInteractions(authRepository)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldBlockOnlyRequestedMemberEvenWhenTargetHasAuth() {
|
||||
// 차단 대상에게 본인인증 정보가 연결된 상황을 준비한다.
|
||||
val memberId = 500L
|
||||
val blockedMemberId = 600L
|
||||
val linkedMemberId = 601L
|
||||
val member = createMember(id = memberId, nickname = "requester2")
|
||||
val blockedMember = createMember(id = blockedMemberId, nickname = "target2")
|
||||
val auth = Auth(
|
||||
name = "홍길동",
|
||||
birth = "19900101",
|
||||
uniqueCi = "unique-ci",
|
||||
di = "di-value",
|
||||
gender = 1
|
||||
)
|
||||
auth.member = blockedMember
|
||||
|
||||
// 요청자와 요청 대상만 조회 가능하도록 목 동작을 설정한다.
|
||||
Mockito.`when`(memberRepository.findById(memberId)).thenReturn(Optional.of(member))
|
||||
Mockito.`when`(memberRepository.findById(blockedMemberId)).thenReturn(Optional.of(blockedMember))
|
||||
Mockito.`when`(
|
||||
blockMemberRepository.getBlockAccount(
|
||||
blockedMemberId = blockedMemberId,
|
||||
memberId = memberId
|
||||
)
|
||||
).thenReturn(null)
|
||||
Mockito.`when`(
|
||||
authRepository.getMemberIdsByNameAndBirthAndDiAndGender(
|
||||
name = auth.name,
|
||||
birth = auth.birth,
|
||||
di = auth.di,
|
||||
gender = auth.gender
|
||||
)
|
||||
).thenReturn(listOf(blockedMemberId, linkedMemberId))
|
||||
|
||||
// 차단 API를 실행한다.
|
||||
service.memberBlock(MemberBlockRequest(blockMemberId = blockedMemberId), memberId)
|
||||
|
||||
// 요청한 blockMemberId 한 건만 차단 처리 및 캐시 무효화되는지 검증한다.
|
||||
Mockito.verify(blockMemberRepository).getBlockAccount(
|
||||
blockedMemberId = blockedMemberId,
|
||||
memberId = memberId
|
||||
)
|
||||
Mockito.verify(blockMemberRepository, Mockito.never()).getBlockAccount(
|
||||
blockedMemberId = linkedMemberId,
|
||||
memberId = memberId
|
||||
)
|
||||
Mockito.verify(cache).evict("getRecommendLive:$memberId")
|
||||
Mockito.verify(cache).evict("getRecommendLive:$blockedMemberId")
|
||||
Mockito.verify(cache, Mockito.never()).evict("getRecommendLive:$linkedMemberId")
|
||||
Mockito.verifyNoInteractions(authRepository)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldEvictRecommendLiveCacheForRequesterAndTargetOnUnblock() {
|
||||
val memberId = 300L
|
||||
|
||||
Reference in New Issue
Block a user