feat(home): 팔로잉 탭 최근 소식 정책을 보강한다
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package kr.co.vividnext.sodalive.member
|
||||
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.member.following.CreatorFollowingRepository
|
||||
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
||||
import kr.co.vividnext.sodalive.support.EmbeddedRedisInitializer
|
||||
import kr.co.vividnext.sodalive.v2.home.following.adapter.out.persistence.HomeFollowingNewsInbox
|
||||
import kr.co.vividnext.sodalive.v2.home.following.adapter.out.persistence.HomeFollowingNewsInboxJpaRepository
|
||||
import kr.co.vividnext.sodalive.v2.home.following.domain.FollowingNewsType
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertNull
|
||||
import org.junit.jupiter.api.Assertions.assertThrows
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
@@ -23,6 +25,7 @@ import javax.persistence.EntityManager
|
||||
class MemberServiceTest @Autowired constructor(
|
||||
private val service: MemberService,
|
||||
private val memberRepository: MemberRepository,
|
||||
private val creatorFollowingRepository: CreatorFollowingRepository,
|
||||
private val homeFollowingNewsInboxJpaRepository: HomeFollowingNewsInboxJpaRepository,
|
||||
private val entityManager: EntityManager
|
||||
) {
|
||||
@@ -94,4 +97,88 @@ class MemberServiceTest @Autowired constructor(
|
||||
|
||||
assertEquals(false, homeFollowingNewsInboxJpaRepository.findById(inbox.id!!).get().isActive)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("통합 팔로우 API에서 isActive=false이고 기존 관계가 없으면 active 팔로우를 생성하지 않는다")
|
||||
fun shouldNotCreateActiveFollowingWhenCreatorFollowIsInactiveWithoutExistingRelation() {
|
||||
val member = memberRepository.save(
|
||||
Member(
|
||||
email = "inactive-follower@test.com",
|
||||
password = "password",
|
||||
nickname = "inactive-follower"
|
||||
)
|
||||
)
|
||||
val creator = memberRepository.save(
|
||||
Member(
|
||||
email = "inactive-creator@test.com",
|
||||
password = "password",
|
||||
nickname = "inactive-creator",
|
||||
role = MemberRole.CREATOR
|
||||
)
|
||||
)
|
||||
|
||||
service.creatorFollow(creatorId = creator.id!!, isNotify = true, isActive = false, memberId = member.id!!)
|
||||
entityManager.flush()
|
||||
entityManager.clear()
|
||||
|
||||
assertNull(creatorFollowingRepository.findByCreatorIdAndMemberId(creatorId = creator.id!!, memberId = member.id!!))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("통합 팔로우 API에서 isActive=false이면 기존 inbox를 비활성화하고 재팔로우해도 복구하지 않는다")
|
||||
fun shouldDeactivateFollowingNewsInboxWhenCreatorFollowIsInactiveAndKeepInactiveAfterRefollow() {
|
||||
val member = memberRepository.save(
|
||||
Member(
|
||||
email = "integrated-follower@test.com",
|
||||
password = "password",
|
||||
nickname = "integrated-follower"
|
||||
)
|
||||
)
|
||||
val creator = memberRepository.save(
|
||||
Member(
|
||||
email = "integrated-creator@test.com",
|
||||
password = "password",
|
||||
nickname = "integrated-creator",
|
||||
role = MemberRole.CREATOR
|
||||
)
|
||||
)
|
||||
service.creatorFollow(creatorId = creator.id!!, isNotify = true, isActive = true, memberId = member.id!!)
|
||||
val inbox = homeFollowingNewsInboxJpaRepository.save(
|
||||
HomeFollowingNewsInbox(
|
||||
memberId = member.id!!,
|
||||
creatorId = creator.id!!,
|
||||
newsType = FollowingNewsType.COMMUNITY_POST,
|
||||
sourceKey = "COMMUNITY_POST:2",
|
||||
targetId = 2L,
|
||||
occurredAtUtc = LocalDateTime.of(2026, 6, 25, 2, 0),
|
||||
visibleFromAtUtc = LocalDateTime.of(2026, 6, 25, 2, 0),
|
||||
creatorNickname = "integrated-creator",
|
||||
creatorProfileImagePath = null,
|
||||
title = "title",
|
||||
body = "body",
|
||||
thumbnailImagePath = null,
|
||||
rank = null,
|
||||
isAdult = false
|
||||
)
|
||||
)
|
||||
entityManager.flush()
|
||||
entityManager.clear()
|
||||
|
||||
service.creatorFollow(creatorId = creator.id!!, isNotify = true, isActive = false, memberId = member.id!!)
|
||||
entityManager.flush()
|
||||
entityManager.clear()
|
||||
|
||||
val inactiveFollowing = creatorFollowingRepository.findByCreatorIdAndMemberId(
|
||||
creatorId = creator.id!!,
|
||||
memberId = member.id!!
|
||||
)
|
||||
assertEquals(false, inactiveFollowing?.isActive)
|
||||
assertEquals(false, homeFollowingNewsInboxJpaRepository.findById(inbox.id!!).get().isActive)
|
||||
|
||||
service.creatorFollow(creatorId = creator.id!!, isNotify = true, isActive = true, memberId = member.id!!)
|
||||
entityManager.flush()
|
||||
entityManager.clear()
|
||||
|
||||
assertEquals(false, homeFollowingNewsInboxJpaRepository.findById(inbox.id!!).get().isActive)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user