feat(creator): 후원 empty 랭킹 상태를 유지한다
This commit is contained in:
@@ -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<CreatorChannelDonationRankingUiModel>,
|
||||
donations: List<CreatorChannelDonationUiModel>
|
||||
) = 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<CreatorChannelDonationRankingUiModel>,
|
||||
val isOwner: Boolean,
|
||||
val actionToastMessage: String? = null
|
||||
) : CreatorChannelDonationUiState
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user