fix(chat-banner): 관리자 배너 목록에 언어 표기를 추가한다

This commit is contained in:
2026-04-02 15:51:50 +09:00
parent ee14389786
commit d3b1f4bcd4
4 changed files with 53 additions and 3 deletions

View File

@@ -62,7 +62,13 @@ class AdminChatBannerController(
val banners = bannerService.getActiveBanners(pageable)
val response = ChatCharacterBannerListPageResponse(
totalCount = banners.totalElements,
content = banners.content.map { ChatCharacterBannerResponse.from(it, imageHost) }
content = banners.content.map {
ChatCharacterBannerResponse.from(
banner = it,
imageHost = imageHost,
appendLanguageToCharacterName = true
)
}
)
ApiResponse.ok(response)

View File

@@ -1,6 +1,7 @@
package kr.co.vividnext.sodalive.admin.chat.dto
import kr.co.vividnext.sodalive.chat.character.ChatCharacterBanner
import kr.co.vividnext.sodalive.i18n.Lang
/**
* 캐릭터 배너 응답 DTO
@@ -12,14 +13,30 @@ data class ChatCharacterBannerResponse(
val characterName: String
) {
companion object {
fun from(banner: ChatCharacterBanner, imageHost: String): ChatCharacterBannerResponse {
fun from(
banner: ChatCharacterBanner,
imageHost: String,
appendLanguageToCharacterName: Boolean = false
): ChatCharacterBannerResponse {
return ChatCharacterBannerResponse(
id = banner.id!!,
imagePath = "$imageHost/${banner.imagePath}",
characterId = banner.chatCharacter.id!!,
characterName = banner.chatCharacter.name
characterName = if (appendLanguageToCharacterName) {
"${banner.chatCharacter.name} (${getLanguageLabel(banner.lang)})"
} else {
banner.chatCharacter.name
}
)
}
private fun getLanguageLabel(lang: Lang): String {
return when (lang) {
Lang.KO -> "한국어"
Lang.EN -> "영어"
Lang.JA -> "일본어"
}
}
}
}

View File

@@ -14,6 +14,8 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import org.mockito.Mockito
import org.springframework.data.domain.PageImpl
import org.springframework.data.domain.PageRequest
import org.springframework.mock.web.MockMultipartFile
import java.net.URL
@@ -107,6 +109,21 @@ class AdminChatBannerControllerTest {
Mockito.verify(bannerService).registerBanner(2L, "", null)
}
@Test
fun shouldAppendBannerLanguageToCharacterNameInBannerList() {
val pageable = PageRequest.of(0, 20)
val japaneseBanner = createBanner(id = 12L, lang = Lang.JA, imagePath = "banner/jp.png")
Mockito.`when`(adminCharacterService.createDefaultPageRequest(0, 20)).thenReturn(pageable)
Mockito.`when`(bannerService.getActiveBanners(pageable))
.thenReturn(PageImpl(listOf(japaneseBanner), pageable, 1))
val response = controller.getBannerList(page = 0, size = 20)
assertTrue(response.success)
assertEquals("character-12 (일본어)", response.data?.content?.first()?.characterName)
}
private fun createBanner(id: Long, lang: Lang, imagePath: String): ChatCharacterBanner {
val character = ChatCharacter(
characterUUID = "character-$id",