feat(content-ranking): 오디오 랭킹 응답 계약을 추가한다

This commit is contained in:
2026-06-24 12:35:12 +09:00
parent 87c51d6087
commit c9d7399f0e
4 changed files with 122 additions and 0 deletions
@@ -0,0 +1,48 @@
package kr.co.vividnext.sodalive.v2.api.content.ranking.dto
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
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
class AudioRankingResponseTest {
private val objectMapper = jacksonObjectMapper()
@Test
@DisplayName("오디오 랭킹 도메인을 응답 DTO로 변환하고 isNew JSON 필드명을 유지한다")
fun shouldMapAudioRankingToResponseAndSerializeIsNew() {
val ranking = AudioRanking(
showRankChange = true,
type = AudioRankingType.RISING,
items = listOf(
AudioRankingItem(
contentId = 1001L,
title = "rising audio",
creatorNickname = "creator",
rank = 1,
rankChange = 3,
isNew = true,
coverImageUrl = "https://cdn.test/audio.png"
)
)
)
val response = AudioRankingResponse.from(ranking)
val json = objectMapper.readTree(objectMapper.writeValueAsString(response))
assertEquals(true, response.showRankChange)
assertEquals(AudioRankingType.RISING, response.type)
assertEquals(1001L, response.items[0].contentId)
assertEquals("rising audio", response.items[0].title)
assertEquals("creator", response.items[0].creatorNickname)
assertEquals(1, response.items[0].rank)
assertEquals(3, response.items[0].rankChange)
assertEquals(true, response.items[0].isNew)
assertEquals("https://cdn.test/audio.png", response.items[0].coverImageUrl)
assertEquals(true, json["items"][0]["isNew"].asBoolean())
assertEquals(false, json["items"][0].has("new"))
}
}