feat(content-preference): 콘텐츠 조회 설정 서버 저장 전환을 반영한다
This commit is contained in:
+101
-5
@@ -8,7 +8,9 @@ import kr.co.vividnext.sodalive.can.use.UseCanRepository
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creatorCommunity.comment.CreatorCommunityComment
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creatorCommunity.comment.CreatorCommunityCommentRepository
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creatorCommunity.like.CreatorCommunityLike
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creatorCommunity.like.CreatorCommunityLikeRepository
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creatorCommunity.like.PostCommunityPostLikeRequest
|
||||
import kr.co.vividnext.sodalive.fcm.FcmDeepLinkValue
|
||||
import kr.co.vividnext.sodalive.fcm.FcmEvent
|
||||
import kr.co.vividnext.sodalive.fcm.FcmEventType
|
||||
@@ -36,6 +38,7 @@ import java.util.Optional
|
||||
class CreatorCommunityServiceTest {
|
||||
private lateinit var repository: CreatorCommunityRepository
|
||||
private lateinit var blockMemberRepository: BlockMemberRepository
|
||||
private lateinit var likeRepository: CreatorCommunityLikeRepository
|
||||
private lateinit var commentRepository: CreatorCommunityCommentRepository
|
||||
private lateinit var useCanRepository: UseCanRepository
|
||||
private lateinit var applicationEventPublisher: ApplicationEventPublisher
|
||||
@@ -45,6 +48,7 @@ class CreatorCommunityServiceTest {
|
||||
fun setup() {
|
||||
repository = Mockito.mock(CreatorCommunityRepository::class.java)
|
||||
blockMemberRepository = Mockito.mock(BlockMemberRepository::class.java)
|
||||
likeRepository = Mockito.mock(CreatorCommunityLikeRepository::class.java)
|
||||
commentRepository = Mockito.mock(CreatorCommunityCommentRepository::class.java)
|
||||
useCanRepository = Mockito.mock(UseCanRepository::class.java)
|
||||
applicationEventPublisher = Mockito.mock(ApplicationEventPublisher::class.java)
|
||||
@@ -53,7 +57,7 @@ class CreatorCommunityServiceTest {
|
||||
canPaymentService = Mockito.mock(CanPaymentService::class.java),
|
||||
repository = repository,
|
||||
blockMemberRepository = blockMemberRepository,
|
||||
likeRepository = Mockito.mock(CreatorCommunityLikeRepository::class.java),
|
||||
likeRepository = likeRepository,
|
||||
commentRepository = commentRepository,
|
||||
useCanRepository = useCanRepository,
|
||||
s3Uploader = Mockito.mock(S3Uploader::class.java),
|
||||
@@ -68,6 +72,29 @@ class CreatorCommunityServiceTest {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("좋아요 처리 시 전달된 성인 여부를 기준으로 게시글을 조회한다")
|
||||
fun shouldUseProvidedIsAdultForCommunityLikeAdultFilter() {
|
||||
val member = createMember(id = 88L, role = MemberRole.USER, nickname = "viewer")
|
||||
val post = CreatorCommunity(content = "adult-post", price = 0, isCommentAvailable = true, isAdult = true)
|
||||
post.id = 801L
|
||||
post.member = createMember(id = 99L, role = MemberRole.CREATOR, nickname = "creator")
|
||||
|
||||
Mockito.`when`(likeRepository.findByPostIdAndMemberId(postId = 801L, memberId = 88L)).thenReturn(null)
|
||||
Mockito.`when`(repository.findByIdAndActive(801L, true)).thenReturn(post)
|
||||
Mockito.`when`(likeRepository.save(Mockito.any(CreatorCommunityLike::class.java)))
|
||||
.thenAnswer { invocation -> invocation.getArgument(0) }
|
||||
|
||||
val response = service.communityPostLike(
|
||||
request = PostCommunityPostLikeRequest(postId = 801L),
|
||||
member = member,
|
||||
isAdult = true
|
||||
)
|
||||
|
||||
assertTrue(response.like)
|
||||
Mockito.verify(repository).findByIdAndActive(801L, true)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("크리에이터가 아닌 사용자가 댓글 작성 시 크리에이터 대상 커뮤니티 딥링크 알림 이벤트를 발행한다")
|
||||
fun shouldPublishCreatorCommunityCommentNotificationEventWhenCommenterIsNotCreator() {
|
||||
@@ -77,7 +104,7 @@ class CreatorCommunityServiceTest {
|
||||
post.id = 301L
|
||||
post.member = creator
|
||||
|
||||
Mockito.`when`(repository.findById(post.id!!)).thenReturn(Optional.of(post))
|
||||
Mockito.`when`(repository.findByIdAndActive(post.id!!, true)).thenReturn(post)
|
||||
Mockito.`when`(useCanRepository.isExistCommunityPostOrdered(post.id!!, commenter.id!!)).thenReturn(false)
|
||||
Mockito.`when`(commentRepository.save(Mockito.any(CreatorCommunityComment::class.java)))
|
||||
.thenAnswer { invocation -> invocation.getArgument(0) }
|
||||
@@ -87,7 +114,8 @@ class CreatorCommunityServiceTest {
|
||||
comment = "새 댓글",
|
||||
postId = post.id!!,
|
||||
parentId = null,
|
||||
isSecret = false
|
||||
isSecret = false,
|
||||
isAdult = true
|
||||
)
|
||||
|
||||
val captor = ArgumentCaptor.forClass(FcmEvent::class.java)
|
||||
@@ -112,7 +140,7 @@ class CreatorCommunityServiceTest {
|
||||
post.id = 401L
|
||||
post.member = creator
|
||||
|
||||
Mockito.`when`(repository.findById(post.id!!)).thenReturn(Optional.of(post))
|
||||
Mockito.`when`(repository.findByIdAndActive(post.id!!, true)).thenReturn(post)
|
||||
Mockito.`when`(useCanRepository.isExistCommunityPostOrdered(post.id!!, creator.id!!)).thenReturn(false)
|
||||
Mockito.`when`(commentRepository.save(Mockito.any(CreatorCommunityComment::class.java)))
|
||||
.thenAnswer { invocation -> invocation.getArgument(0) }
|
||||
@@ -122,12 +150,80 @@ class CreatorCommunityServiceTest {
|
||||
comment = "내가 단 댓글",
|
||||
postId = post.id!!,
|
||||
parentId = null,
|
||||
isSecret = false
|
||||
isSecret = false,
|
||||
isAdult = true
|
||||
)
|
||||
|
||||
Mockito.verify(applicationEventPublisher, Mockito.never()).publishEvent(Mockito.any())
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("비성인 정책 사용자가 성인 커뮤니티 게시글에 댓글 작성 시 예외가 발생한다")
|
||||
fun shouldThrowExceptionWhenCommentingAdultPostWithNonAdultPolicy() {
|
||||
val commenter = createMember(id = 23L, role = MemberRole.USER, nickname = "viewer")
|
||||
|
||||
Mockito.`when`(repository.findByIdAndActive(901L, false)).thenReturn(null)
|
||||
|
||||
val exception = assertThrows(SodaException::class.java) {
|
||||
service.createCommunityPostComment(
|
||||
member = commenter,
|
||||
comment = "접근 불가 댓글",
|
||||
postId = 901L,
|
||||
isAdult = false
|
||||
)
|
||||
}
|
||||
|
||||
assertEquals("creator.community.invalid_request_retry", exception.messageKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("비성인 정책 사용자가 성인 게시글 댓글 목록을 조회하면 예외가 발생한다")
|
||||
fun shouldThrowExceptionWhenFetchingAdultPostCommentsWithNonAdultPolicy() {
|
||||
Mockito.`when`(repository.findByIdAndActive(902L, false)).thenReturn(null)
|
||||
|
||||
val exception = assertThrows(SodaException::class.java) {
|
||||
service.getCommunityPostCommentList(
|
||||
postId = 902L,
|
||||
memberId = 23L,
|
||||
timezone = "Asia/Seoul",
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
isAdult = false
|
||||
)
|
||||
}
|
||||
|
||||
assertEquals("creator.community.invalid_request_retry", exception.messageKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("비성인 정책 사용자가 성인 게시글 댓글의 답글 목록을 조회하면 예외가 발생한다")
|
||||
fun shouldThrowExceptionWhenFetchingReplyOfAdultPostWithNonAdultPolicy() {
|
||||
val creator = createMember(id = 31L, role = MemberRole.CREATOR, nickname = "creator")
|
||||
val adultPost = CreatorCommunity(content = "adult-post", price = 0, isCommentAvailable = true, isAdult = true)
|
||||
adultPost.id = 903L
|
||||
adultPost.member = creator
|
||||
|
||||
val parentComment = CreatorCommunityComment(comment = "parent", isSecret = false)
|
||||
parentComment.id = 1001L
|
||||
parentComment.creatorCommunity = adultPost
|
||||
parentComment.member = creator
|
||||
|
||||
Mockito.`when`(commentRepository.findById(1001L)).thenReturn(Optional.of(parentComment))
|
||||
|
||||
val exception = assertThrows(SodaException::class.java) {
|
||||
service.getCommentReplyList(
|
||||
commentId = 1001L,
|
||||
memberId = 32L,
|
||||
timezone = "Asia/Seoul",
|
||||
offset = 0,
|
||||
limit = 10,
|
||||
isAdult = false
|
||||
)
|
||||
}
|
||||
|
||||
assertEquals("creator.community.invalid_request_retry", exception.messageKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("고정 게시물이 이미 3개면 추가 고정 시 예외가 발생한다")
|
||||
fun shouldThrowExceptionWhenPinCountExceedsLimit() {
|
||||
|
||||
Reference in New Issue
Block a user