diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt index c992e8e4..89a33de3 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt @@ -151,10 +151,11 @@ class CreatorChannelDonationViewModel( val data = response.data if (response.success && data != null) { val donations = data.toDonationUiModels() + val rankings = data.toDonationRankingUiModels() _donationStateLiveData.value = if (donations.isEmpty() || data.donationCount == 0) { - CreatorChannelDonationUiState.Empty(data.donationCount, isOwner) + CreatorChannelDonationUiState.Empty(data.donationCount, rankings, isOwner) } else { - data.toContentState(donations) + data.toContentState(rankings, donations) } } else { _donationStateLiveData.value = CreatorChannelDonationUiState.Error(response.message) @@ -205,10 +206,11 @@ class CreatorChannelDonationViewModel( } private fun CreatorChannelDonationTabResponse.toContentState( + rankings: List, donations: List ) = CreatorChannelDonationUiState.Content( donationCount = donationCount, - rankings = toDonationRankingUiModels(), + rankings = rankings, donations = donations, page = page, size = size, @@ -234,6 +236,7 @@ sealed interface CreatorChannelDonationUiState { data object Loading : CreatorChannelDonationUiState data class Empty( val donationCount: Int, + val rankings: List, val isOwner: Boolean, val actionToastMessage: String? = null ) : CreatorChannelDonationUiState diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt index b4e4a08d..ee1c163e 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt @@ -20,7 +20,6 @@ import kr.co.vividnext.sodalive.v2.creator.channel.donation.data.CreatorChannelD import kr.co.vividnext.sodalive.v2.creator.channel.donation.data.MemberDonationRankingResponse import org.junit.After import org.junit.Assert.assertEquals -import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -80,15 +79,17 @@ class CreatorChannelDonationViewModelTest { val state = viewModel.donationStateLiveData.requireValue() as CreatorChannelDonationUiState.Empty assertEquals(0, state.donationCount) + assertEquals(listOf(10L), state.rankings.map { it.userId }) } @Test - fun `표시 가능한 donations가 없으면 Empty 상태가 된다`() { + fun `표시 가능한 donations가 없으면 랭킹을 유지한 Empty 상태가 된다`() { stubGetDonations(response = Single.just(ApiResponse(true, donationResponse(ids = emptyList()), null))) viewModel.loadDonations(100L, isOwner = false) - assertTrue(viewModel.donationStateLiveData.requireValue() is CreatorChannelDonationUiState.Empty) + val state = viewModel.donationStateLiveData.requireValue() as CreatorChannelDonationUiState.Empty + assertEquals(listOf(10L), state.rankings.map { it.userId }) } @Test