feat(recommend): 추천 활동 공통 모델을 추가한다
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package kr.co.vividnext.sodalive.v2.recommend.application
|
||||
|
||||
import kr.co.vividnext.sodalive.v2.recommend.domain.RecommendedActivityType
|
||||
|
||||
class HomeRecommendationQueryService {
|
||||
fun resolveAudioContentActivityType(theme: String): RecommendedActivityType {
|
||||
return if (theme == LIVE_REPLAY_THEME) {
|
||||
RecommendedActivityType.LIVE_REPLAY
|
||||
} else {
|
||||
RecommendedActivityType.AUDIO
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val LIVE_REPLAY_THEME = "다시듣기"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package kr.co.vividnext.sodalive.v2.recommend.domain
|
||||
|
||||
enum class RecommendedActivityType(val code: String) {
|
||||
LIVE("LIVE"),
|
||||
AUDIO("AUDIO"),
|
||||
COMMUNITY("COMMUNITY"),
|
||||
LIVE_REPLAY("LIVE_REPLAY")
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package kr.co.vividnext.sodalive.v2.recommend.domain
|
||||
|
||||
enum class RecommendedSectionType(val code: String) {
|
||||
LIVE("LIVE"),
|
||||
BANNER("BANNER"),
|
||||
ACTIVE_CREATOR("ACTIVE_CREATOR"),
|
||||
DEBUT_CREATOR("DEBUT_CREATOR"),
|
||||
FIRST_AUDIO_CONTENT("FIRST_AUDIO_CONTENT"),
|
||||
AI_CHARACTER("AI_CHARACTER"),
|
||||
GENRE_CREATOR("GENRE_CREATOR"),
|
||||
CHEER_CREATOR("CHEER_CREATOR"),
|
||||
POPULAR_COMMUNITY("POPULAR_COMMUNITY")
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package kr.co.vividnext.sodalive.v2.recommend.application
|
||||
|
||||
import kr.co.vividnext.sodalive.v2.recommend.domain.RecommendedActivityType
|
||||
import kr.co.vividnext.sodalive.v2.recommend.domain.RecommendedSectionType
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class HomeRecommendationQueryServiceTest {
|
||||
private val service = HomeRecommendationQueryService()
|
||||
|
||||
@Test
|
||||
@DisplayName("다시듣기 테마 콘텐츠는 AUDIO가 아니라 LIVE_REPLAY 활동으로 분류한다")
|
||||
fun shouldClassifyLiveReplayThemeContentAsLiveReplay() {
|
||||
val activityType = service.resolveAudioContentActivityType(theme = "다시듣기")
|
||||
|
||||
assertEquals(RecommendedActivityType.LIVE_REPLAY, activityType)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("다시듣기가 아닌 테마 콘텐츠는 AUDIO 활동으로 분류한다")
|
||||
fun shouldClassifyNonLiveReplayThemeContentAsAudio() {
|
||||
val activityType = service.resolveAudioContentActivityType(theme = "수면")
|
||||
|
||||
assertEquals(RecommendedActivityType.AUDIO, activityType)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("활동 타입 enum code는 앱 다국어 처리를 위해 영문 값과 동일하게 유지한다")
|
||||
fun shouldKeepRecommendedActivityTypeCodeAsEnglishName() {
|
||||
assertEquals("LIVE", RecommendedActivityType.LIVE.code)
|
||||
assertEquals("AUDIO", RecommendedActivityType.AUDIO.code)
|
||||
assertEquals("COMMUNITY", RecommendedActivityType.COMMUNITY.code)
|
||||
assertEquals("LIVE_REPLAY", RecommendedActivityType.LIVE_REPLAY.code)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("섹션 타입 enum code는 앱 다국어 처리를 위해 영문 값과 동일하게 유지한다")
|
||||
fun shouldKeepRecommendedSectionTypeCodeAsEnglishName() {
|
||||
assertEquals("LIVE", RecommendedSectionType.LIVE.code)
|
||||
assertEquals("BANNER", RecommendedSectionType.BANNER.code)
|
||||
assertEquals("ACTIVE_CREATOR", RecommendedSectionType.ACTIVE_CREATOR.code)
|
||||
assertEquals("DEBUT_CREATOR", RecommendedSectionType.DEBUT_CREATOR.code)
|
||||
assertEquals("FIRST_AUDIO_CONTENT", RecommendedSectionType.FIRST_AUDIO_CONTENT.code)
|
||||
assertEquals("AI_CHARACTER", RecommendedSectionType.AI_CHARACTER.code)
|
||||
assertEquals("GENRE_CREATOR", RecommendedSectionType.GENRE_CREATOR.code)
|
||||
assertEquals("CHEER_CREATOR", RecommendedSectionType.CHEER_CREATOR.code)
|
||||
assertEquals("POPULAR_COMMUNITY", RecommendedSectionType.POPULAR_COMMUNITY.code)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user