Updated on 2026-08-14
This commit is contained in:
parent
e5475e26e1
commit
7e42240fc6
8 changed files with 199 additions and 17 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue