test #426
@@ -0,0 +1,16 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.api.content.ranking.application
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
import kr.co.vividnext.sodalive.v2.api.content.ranking.dto.AudioRankingResponse
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.application.AudioRankingQueryService
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRankingType
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
|
@Component
|
||||||
|
class AudioRankingFacade(
|
||||||
|
private val queryService: AudioRankingQueryService
|
||||||
|
) {
|
||||||
|
fun getRankings(type: AudioRankingType, member: Member?): AudioRankingResponse {
|
||||||
|
return AudioRankingResponse.from(queryService.getRankings(type, member))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.content.ranking.application
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRanking
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRankingType
|
||||||
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
|
@Service
|
||||||
|
class AudioRankingQueryService {
|
||||||
|
fun getRankings(type: AudioRankingType, member: Member?): AudioRanking {
|
||||||
|
return AudioRanking(
|
||||||
|
showRankChange = false,
|
||||||
|
type = type,
|
||||||
|
items = emptyList()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.api.content.ranking.application
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.application.AudioRankingQueryService
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRanking
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRankingItem
|
||||||
|
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRankingType
|
||||||
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.mockito.Mockito
|
||||||
|
|
||||||
|
class AudioRankingFacadeTest {
|
||||||
|
private val queryService = Mockito.mock(AudioRankingQueryService::class.java)
|
||||||
|
private val facade = AudioRankingFacade(queryService)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("facade는 랭킹 타입과 회원을 쿼리 서비스에 그대로 전달하고 공개 응답으로 변환한다")
|
||||||
|
fun shouldDelegateTypeAndMemberAndConvertDomainRankingToResponse() {
|
||||||
|
val member = Mockito.mock(Member::class.java)
|
||||||
|
val ranking = AudioRanking(
|
||||||
|
showRankChange = true,
|
||||||
|
type = AudioRankingType.RISING,
|
||||||
|
items = listOf(
|
||||||
|
AudioRankingItem(
|
||||||
|
contentId = 1L,
|
||||||
|
title = "audio",
|
||||||
|
creatorNickname = "creator",
|
||||||
|
rank = 1,
|
||||||
|
rankChange = 2,
|
||||||
|
isNew = false,
|
||||||
|
coverImageUrl = "https://cdn.test/audio.png"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
Mockito.doReturn(ranking).`when`(queryService).getRankings(AudioRankingType.RISING, member)
|
||||||
|
|
||||||
|
val response = facade.getRankings(AudioRankingType.RISING, member)
|
||||||
|
|
||||||
|
Mockito.verify(queryService).getRankings(AudioRankingType.RISING, member)
|
||||||
|
assertEquals(true, response.showRankChange)
|
||||||
|
assertEquals(AudioRankingType.RISING, response.type)
|
||||||
|
assertEquals(1, response.items.size)
|
||||||
|
assertEquals(1L, response.items[0].contentId)
|
||||||
|
assertEquals("audio", response.items[0].title)
|
||||||
|
assertEquals("creator", response.items[0].creatorNickname)
|
||||||
|
assertEquals(1, response.items[0].rank)
|
||||||
|
assertEquals(2, response.items[0].rankChange)
|
||||||
|
assertEquals(false, response.items[0].isNew)
|
||||||
|
assertEquals("https://cdn.test/audio.png", response.items[0].coverImageUrl)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user