feat(recommendation): 추천 배너 언어 필터를 적용한다

This commit is contained in:
2026-08-19 17:10:05 +09:00
parent b1be87b46f
commit 1731b3a8c1
15 changed files with 154 additions and 18 deletions
@@ -1,5 +1,6 @@
package kr.co.vividnext.sodalive.v2.api.home.application
import kr.co.vividnext.sodalive.i18n.Lang
import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
import kr.co.vividnext.sodalive.v2.recommendation.application.HomeRecommendationQueryService
@@ -56,6 +57,27 @@ class HomeRecommendationFacadeTest {
assertTrue(queryPort.bannerIncludeAdultBanners)
}
@Test
@DisplayName("홈 추천은 JP 국가 판정이면 JA 배너 조회를 요청한다")
fun shouldPassJaToHomeBannerQueryForJapan() {
val member = Member(password = "password", nickname = "jp-member").apply { id = 11L }
Mockito.doReturn("JP").`when`(preferenceService).resolveCountryCode(member)
facade.getHomeRecommendations(member)
assertTrue(queryPort.bannerLang == Lang.JA)
}
@Test
@DisplayName("홈 추천은 JP 이외 국가 판정이면 KO 배너 조회를 요청한다")
fun shouldPassKoToHomeBannerQueryForNonJapan() {
Mockito.doReturn("KR").`when`(preferenceService).resolveCountryCode(null)
facade.getHomeRecommendations(null)
assertTrue(queryPort.bannerLang == Lang.KO)
}
private fun firstAudio(price: Int, isPointAvailable: Boolean): HomeFirstAudioContentRecord {
return HomeFirstAudioContentRecord(
contentId = price.toLong() + 1,
@@ -74,6 +96,7 @@ class HomeRecommendationFacadeTest {
private class FakeHomeRecommendationQueryPort : HomeRecommendationQueryPort {
var firstAudioContents: List<HomeFirstAudioContentRecord> = emptyList()
var bannerIncludeAdultBanners: Boolean = false
var bannerLang: Lang? = null
override fun findLiveRecommendations(
offset: Long,
@@ -85,9 +108,11 @@ class HomeRecommendationFacadeTest {
override fun findHomeBanners(
limit: Int,
memberId: Long?,
includeAdultBanners: Boolean
includeAdultBanners: Boolean,
lang: Lang
): List<HomeBannerRecommendationRecord> {
bannerIncludeAdultBanners = includeAdultBanners
bannerLang = lang
return emptyList()
}