feat(audio-recommendation): 오디오 추천 점수 정책을 추가한다
This commit is contained in:
+44
@@ -0,0 +1,44 @@
|
||||
package kr.co.vividnext.sodalive.v2.audio.recommendation.domain
|
||||
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.time.LocalDateTime
|
||||
|
||||
class AudioRecommendationScorePolicyTest {
|
||||
private val policy = AudioRecommendationScorePolicy()
|
||||
private val now = LocalDateTime.of(2026, 6, 23, 12, 0)
|
||||
|
||||
@Test
|
||||
@DisplayName("New & Hot 점수는 원본 count를 정규화하지 않고 가중합으로 계산한다")
|
||||
fun shouldCalculateNewAndHotScoreWithoutNormalization() {
|
||||
val score = policy.calculateNewAndHotScore(10, 4, 2, now.minusDays(2), now)
|
||||
|
||||
assertEquals(485.5, score)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("추천 오디오 점수는 원본 count와 최신성 배수를 가중합으로 계산한다")
|
||||
fun shouldCalculateRecommendedAudioScoreWithoutNormalization() {
|
||||
val score = policy.calculateRecommendedAudioScore(10, 4, 2, now.minusDays(10), now)
|
||||
|
||||
assertEquals(601.0, score)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("최신성 배수는 정책별 일수 경계를 적용한다")
|
||||
fun shouldReturnRecencyMultipliersByPolicyBoundaries() {
|
||||
assertEquals(1.3, policy.newAndHotRecencyMultiplier(now.minusDays(3), now))
|
||||
assertEquals(1.15, policy.newAndHotRecencyMultiplier(now.minusDays(7), now))
|
||||
assertEquals(1.0, policy.newAndHotRecencyMultiplier(now.minusDays(14), now))
|
||||
assertEquals(0.8, policy.newAndHotRecencyMultiplier(now.minusDays(15), now))
|
||||
assertEquals(1.3, policy.recommendedAudioRecencyMultiplier(now.minusDays(3), now))
|
||||
assertEquals(1.15, policy.recommendedAudioRecencyMultiplier(now.minusDays(7), now))
|
||||
assertEquals(1.1, policy.recommendedAudioRecencyMultiplier(now.minusDays(30), now))
|
||||
assertEquals(1.0, policy.recommendedAudioRecencyMultiplier(now.minusDays(31), now))
|
||||
assertEquals(1.3, policy.commentRecencyMultiplier(now.minusDays(3), now))
|
||||
assertEquals(1.15, policy.commentRecencyMultiplier(now.minusDays(7), now))
|
||||
assertEquals(1.0, policy.commentRecencyMultiplier(now.minusDays(14), now))
|
||||
assertEquals(0.0, policy.commentRecencyMultiplier(now.minusDays(15), now))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user