Updated on 2026-08-14

This commit is contained in:
Tangem 2026-05-12 18:18:30 +01:00
parent e5475e26e1
commit 7e42240fc6
8 changed files with 199 additions and 17 deletions

View file

@ -4,12 +4,18 @@ import com.google.common.truth.Truth.assertThat
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.decompose.model.MutableParamsContainer
import com.tangem.domain.account.models.AccountStatusList
import com.tangem.domain.account.status.supplier.SingleAccountStatusListSupplier
import com.tangem.domain.models.account.AccountId
import com.tangem.domain.models.account.AccountStatus
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.feature.wallet.child.managetokens.AddAndManageBottomSheetComponent
import com.tangem.features.commonfeatures.api.portfolioselector.PortfolioFetcher
import com.tangem.features.commonfeatures.api.portfolioselector.PortfolioSelectorController
import com.tangem.utils.coroutines.TestingCoroutineDispatcherProvider
import io.mockk.coEvery
import io.mockk.every
import io.mockk.mockk
import io.mockk.slot
@ -38,6 +44,9 @@ internal class AddAndManageModelTest {
private val portfolioSelectorController: PortfolioSelectorController = mockk(relaxed = true) {
every { selectedAccount } returns flowOf(null)
}
private val singleAccountStatusListSupplier: SingleAccountStatusListSupplier = mockk(relaxed = true) {
coEvery { getSyncOrNull(any<UserWalletId>()) } returns null
}
private val onDismiss: () -> Unit = mockk(relaxed = true)
private val onOrganizeTokensClick: () -> Unit = mockk(relaxed = true)
@ -58,6 +67,7 @@ internal class AddAndManageModelTest {
portfolioFetcherFactory = portfolioFetcherFactory,
analyticsEventHandler = analyticsEventHandler,
portfolioSelectorController = portfolioSelectorController,
singleAccountStatusListSupplier = singleAccountStatusListSupplier,
)
@Test
@ -98,4 +108,38 @@ internal class AddAndManageModelTest {
verify(exactly = 1) { onDismiss() }
verify(exactly = 1) { onOrganizeTokensClick() }
}
@Test
fun `GIVEN wallet has multi currency account WHEN model is created THEN shouldShowOrganize is true`() = runTest {
coEvery { singleAccountStatusListSupplier.getSyncOrNull(userWalletId) } returns
accountStatusListWithCurrencyCounts(2)
val model = createModel()
assertThat(model.state.value.shouldShowOrganize).isTrue()
}
@Test
fun `GIVEN wallet has no multi currency account WHEN model is created THEN shouldShowOrganize is false`() = runTest {
coEvery { singleAccountStatusListSupplier.getSyncOrNull(userWalletId) } returns
accountStatusListWithCurrencyCounts(1)
val model = createModel()
assertThat(model.state.value.shouldShowOrganize).isFalse()
}
private fun accountStatusListWithCurrencyCounts(vararg currencyCounts: Int): AccountStatusList {
val statuses: List<AccountStatus> = currencyCounts.map { count ->
val tokenList = mockk<TokenList> {
every { flattenCurrencies() } returns List(count) { mockk<CryptoCurrencyStatus>() }
}
mockk<AccountStatus.CryptoPortfolio> {
every { this@mockk.tokenList } returns tokenList
}
}
return mockk {
every { accountStatuses } returns statuses
}
}
}