feat(creator-channel): 후원 탭 legacy 랭킹 adapter를 추가한다

This commit is contained in:
2026-06-22 19:18:27 +09:00
parent 951f6789f0
commit 8e76c2d640
2 changed files with 120 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
package kr.co.vividnext.sodalive.v2.creator.channel.donation.adapter.out.legacy
import kr.co.vividnext.sodalive.explorer.profile.CreatorDonationRankingService
import kr.co.vividnext.sodalive.member.DonationRankingPeriod
import kr.co.vividnext.sodalive.v2.creator.channel.donation.port.out.CreatorChannelDonationRankingPort
import kr.co.vividnext.sodalive.v2.creator.channel.donation.port.out.CreatorChannelDonationRankingRecord
import org.springframework.stereotype.Component
@Component
class LegacyCreatorChannelDonationRankingAdapter(
private val creatorDonationRankingService: CreatorDonationRankingService
) : CreatorChannelDonationRankingPort {
override fun findTopRankings(
creatorId: Long,
period: DonationRankingPeriod,
withDonationCan: Boolean
): List<CreatorChannelDonationRankingRecord> {
return creatorDonationRankingService.getMemberDonationRanking(
creatorId = creatorId,
offset = 0L,
limit = 8L,
withDonationCan = withDonationCan,
period = period
).map {
CreatorChannelDonationRankingRecord(
userId = it.userId,
nickname = it.nickname,
profileImage = it.profileImage,
donationCan = it.donationCan
)
}
}
}

View File

@@ -0,0 +1,87 @@
package kr.co.vividnext.sodalive.v2.creator.channel.donation.adapter.out.legacy
import kr.co.vividnext.sodalive.explorer.MemberDonationRankingResponse
import kr.co.vividnext.sodalive.explorer.profile.CreatorDonationRankingService
import kr.co.vividnext.sodalive.member.DonationRankingPeriod
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.mockito.Mockito
class LegacyCreatorChannelDonationRankingAdapterTest {
private val creatorDonationRankingService = Mockito.mock(CreatorDonationRankingService::class.java)
private val adapter = LegacyCreatorChannelDonationRankingAdapter(creatorDonationRankingService)
@Test
@DisplayName("누적 기간 후원 랭킹 Top 8을 legacy service에 위임한다")
fun shouldDelegateCumulativeRankingRequestToLegacyService() {
Mockito.`when`(
creatorDonationRankingService.getMemberDonationRanking(
creatorId = 10L,
offset = 0L,
limit = 8L,
withDonationCan = false,
period = DonationRankingPeriod.CUMULATIVE
)
).thenReturn(emptyList())
val rankings = adapter.findTopRankings(
creatorId = 10L,
period = DonationRankingPeriod.CUMULATIVE,
withDonationCan = false
)
assertEquals(emptyList<Any>(), rankings)
Mockito.verify(creatorDonationRankingService).getMemberDonationRanking(
creatorId = 10L,
offset = 0L,
limit = 8L,
withDonationCan = false,
period = DonationRankingPeriod.CUMULATIVE
)
Mockito.verifyNoMoreInteractions(creatorDonationRankingService)
}
@Test
@DisplayName("주간 기간 후원 랭킹 Top 8을 legacy service에 위임하고 필드를 그대로 매핑한다")
fun shouldDelegateWeeklyRankingRequestAndMapFields() {
Mockito.`when`(
creatorDonationRankingService.getMemberDonationRanking(
creatorId = 20L,
offset = 0L,
limit = 8L,
withDonationCan = true,
period = DonationRankingPeriod.WEEKLY
)
).thenReturn(
listOf(
MemberDonationRankingResponse(
userId = 30L,
nickname = "donor",
profileImage = "https://cdn.test/profile.png",
donationCan = 1234
)
)
)
val rankings = adapter.findTopRankings(
creatorId = 20L,
period = DonationRankingPeriod.WEEKLY,
withDonationCan = true
)
assertEquals(1, rankings.size)
assertEquals(30L, rankings[0].userId)
assertEquals("donor", rankings[0].nickname)
assertEquals("https://cdn.test/profile.png", rankings[0].profileImage)
assertEquals(1234, rankings[0].donationCan)
Mockito.verify(creatorDonationRankingService).getMemberDonationRanking(
creatorId = 20L,
offset = 0L,
limit = 8L,
withDonationCan = true,
period = DonationRankingPeriod.WEEKLY
)
Mockito.verifyNoMoreInteractions(creatorDonationRankingService)
}
}