fix(channel-donation): 후원 목록 탈퇴 닉네임 접두사를 제거한다

This commit is contained in:
2026-03-28 19:06:04 +09:00
parent feb1ab9f13
commit 0efdfbeed8
3 changed files with 74 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.explorer.profile.channelDonation
import kr.co.vividnext.sodalive.can.payment.CanPaymentService
import kr.co.vividnext.sodalive.can.use.CanUsage
import kr.co.vividnext.sodalive.common.SodaException
import kr.co.vividnext.sodalive.extensions.removeDeletedNicknamePrefix
import kr.co.vividnext.sodalive.i18n.LangContext
import kr.co.vividnext.sodalive.i18n.SodaMessageSource
import kr.co.vividnext.sodalive.member.Member
@@ -102,7 +103,7 @@ class ChannelDonationService(
GetChannelDonationListItem(
id = it.id!!,
memberId = it.member!!.id!!,
nickname = it.member!!.nickname,
nickname = it.member!!.nickname.removeDeletedNicknamePrefix(),
profileUrl = if (it.member!!.profileImage != null) {
"$cloudFrontHost/${it.member!!.profileImage}"
} else {

View File

@@ -149,6 +149,54 @@ class ChannelDonationServiceTest {
assertEquals(startDateTimeKst.plusMonths(1), endDateTimeKst)
}
@Test
@DisplayName("탈퇴 회원 닉네임 접두사는 목록 응답에서 제거된다")
fun shouldRemoveDeletedPrefixFromNicknameInDonationList() {
// given: 탈퇴 접두사가 포함된 후원자 닉네임 데이터를 준비한다.
val creator = createMember(id = 1L, role = MemberRole.CREATOR, nickname = "creator")
val viewer = createMember(id = 2L, role = MemberRole.USER, nickname = "viewer")
val withdrawnMember = createMember(id = 3L, role = MemberRole.USER, nickname = "deleted_withdrawn")
val message = ChannelDonationMessage(can = 3, isSecret = false, additionalMessage = null)
message.id = 1002L
message.member = withdrawnMember
message.creator = creator
message.createdAt = LocalDateTime.of(2026, 2, 20, 12, 0, 0)
// given: 목록 조회 repository 응답을 설정한다.
Mockito.`when`(memberRepository.findCreatorByIdOrNull(creator.id!!)).thenReturn(creator)
Mockito.`when`(
channelDonationMessageRepository.getChannelDonationMessageTotalCount(
Mockito.eq(creator.id!!),
Mockito.eq(viewer.id!!),
Mockito.eq(false),
anyLocalDateTime(),
anyLocalDateTime()
)
).thenReturn(1)
Mockito.`when`(
channelDonationMessageRepository.getChannelDonationMessageList(
Mockito.eq(creator.id!!),
Mockito.eq(viewer.id!!),
Mockito.eq(false),
Mockito.eq(0L),
Mockito.eq(5L),
anyLocalDateTime(),
anyLocalDateTime()
)
).thenReturn(listOf(message))
// when: 채널 후원 목록 조회를 실행한다.
val result = service.getChannelDonationList(
creatorId = creator.id!!,
member = viewer,
offset = 0,
limit = 5
)
// then: 응답 닉네임에서 deleted_ 접두사가 제거되어야 한다.
assertEquals("withdrawn", result.items[0].nickname)
}
@Test
@DisplayName("후원 캔 수는 천 단위 콤마가 포함된 메시지로 포맷된다")
fun shouldFormatCanWithCommaInDonationMessage() {