Updated on 2026-08-14
This commit is contained in:
parent
0b81b905c3
commit
50332186fa
47 changed files with 38 additions and 408 deletions
|
|
@ -1,6 +0,0 @@
|
|||
package com.tangem.domain.dynamicaddresses
|
||||
|
||||
interface DynamicAddressesFeatureToggles {
|
||||
|
||||
val isDynamicAddressesEnabled: Boolean
|
||||
}
|
||||
|
|
@ -11,12 +11,9 @@ import com.tangem.domain.wallets.derivations.derivationStyleProvider
|
|||
* Whether the Dynamic Addresses menu entry should be shown for a given (wallet, currency) pair.
|
||||
* Policy check only — hardware XPUB capability is verified by [IsXpubSupportedUseCase].
|
||||
*/
|
||||
class IsDynamicAddressesAvailableUseCase(
|
||||
private val featureToggles: DynamicAddressesFeatureToggles,
|
||||
) {
|
||||
class IsDynamicAddressesAvailableUseCase {
|
||||
|
||||
operator fun invoke(userWallet: UserWallet, cryptoCurrency: CryptoCurrency): Boolean {
|
||||
if (!featureToggles.isDynamicAddressesEnabled) return false
|
||||
if (cryptoCurrency !is CryptoCurrency.Coin) return false
|
||||
|
||||
val network = cryptoCurrency.network
|
||||
|
|
|
|||
|
|
@ -21,13 +21,11 @@ import org.junit.jupiter.api.TestInstance
|
|||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
class IsDynamicAddressesAvailableUseCaseTest {
|
||||
|
||||
private val featureToggles: DynamicAddressesFeatureToggles = mockk()
|
||||
private val useCase = IsDynamicAddressesAvailableUseCase(featureToggles)
|
||||
private val useCase = IsDynamicAddressesAvailableUseCase()
|
||||
|
||||
@BeforeAll
|
||||
fun setup() {
|
||||
mockkStatic("com.tangem.domain.wallets.derivations.DerivationStyleProviderExtKt")
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
|
|
@ -37,17 +35,6 @@ class IsDynamicAddressesAvailableUseCaseTest {
|
|||
|
||||
// region Gating
|
||||
|
||||
@Test
|
||||
fun `feature toggle off returns false`() {
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns false
|
||||
|
||||
val coin = coin(Blockchain.Bitcoin, "m/84'/0'/0'/0/0")
|
||||
val result = useCase(walletWithStyle(DerivationStyle.V3), coin)
|
||||
|
||||
assertThat(result).isFalse()
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true // restore
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `token currency returns false`() {
|
||||
val token = token(Blockchain.Ethereum, "m/44'/60'/0'/0/0")
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.tangem.domain.transaction.usecase
|
|||
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.common.wallets.getSyncOrNull
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.dynamicaddresses.GetDynamicReceiveAddressUseCase
|
||||
import com.tangem.domain.dynamicaddresses.model.DynamicAddressesStatus
|
||||
import com.tangem.domain.dynamicaddresses.repository.DynamicAddressesRepository
|
||||
|
|
@ -27,7 +26,6 @@ class ReceiveAddressesFactory(
|
|||
private val getViewedTokenReceiveWarningUseCase: GetViewedTokenReceiveWarningUseCase,
|
||||
private val getDynamicReceiveAddressUseCase: GetDynamicReceiveAddressUseCase,
|
||||
private val dynamicAddressesRepository: DynamicAddressesRepository,
|
||||
private val dynamicAddressesFeatureToggles: DynamicAddressesFeatureToggles,
|
||||
private val userWalletsListRepository: UserWalletsListRepository,
|
||||
) {
|
||||
|
||||
|
|
@ -68,7 +66,6 @@ class ReceiveAddressesFactory(
|
|||
userWalletId: UserWalletId,
|
||||
cryptoCurrency: CryptoCurrency,
|
||||
): String? {
|
||||
if (!dynamicAddressesFeatureToggles.isDynamicAddressesEnabled) return null
|
||||
if (cryptoCurrency !is CryptoCurrency.Coin) return null
|
||||
|
||||
val userWallet = userWalletsListRepository.getSyncOrNull(userWalletId)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import com.tangem.blockchain.common.Blockchain
|
|||
import com.tangem.common.test.domain.token.MockCryptoCurrencyFactory
|
||||
import com.tangem.common.test.domain.wallet.MockUserWalletFactory
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.dynamicaddresses.GetDynamicReceiveAddressUseCase
|
||||
import com.tangem.domain.dynamicaddresses.repository.DynamicAddressesRepository
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
|
|
@ -28,7 +27,6 @@ internal class ReceiveAddressesFactoryTest {
|
|||
private val getViewedTokenReceiveWarningUseCase: GetViewedTokenReceiveWarningUseCase = mockk()
|
||||
private val getDynamicReceiveAddressUseCase: GetDynamicReceiveAddressUseCase = mockk()
|
||||
private val dynamicAddressesRepository: DynamicAddressesRepository = mockk()
|
||||
private val dynamicAddressesFeatureToggles: DynamicAddressesFeatureToggles = mockk()
|
||||
private val userWalletsListRepository: UserWalletsListRepository = mockk()
|
||||
|
||||
private val factory = ReceiveAddressesFactory(
|
||||
|
|
@ -36,7 +34,6 @@ internal class ReceiveAddressesFactoryTest {
|
|||
getViewedTokenReceiveWarningUseCase = getViewedTokenReceiveWarningUseCase,
|
||||
getDynamicReceiveAddressUseCase = getDynamicReceiveAddressUseCase,
|
||||
dynamicAddressesRepository = dynamicAddressesRepository,
|
||||
dynamicAddressesFeatureToggles = dynamicAddressesFeatureToggles,
|
||||
userWalletsListRepository = userWalletsListRepository,
|
||||
)
|
||||
|
||||
|
|
@ -54,7 +51,6 @@ internal class ReceiveAddressesFactoryTest {
|
|||
)
|
||||
}
|
||||
|
||||
every { dynamicAddressesFeatureToggles.isDynamicAddressesEnabled } returns true
|
||||
every { userWalletsListRepository.userWallets } returns MutableStateFlow<List<UserWallet>?>(listOf(userWallet))
|
||||
// Single-currency wallets never populate the accounts store, so the status flow never emits ([REDACTED_TASK_KEY])
|
||||
every { dynamicAddressesRepository.getStatus(any(), any()) } returns flow { awaitCancellation() }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.tangem.domain.txhistory
|
||||
|
||||
interface TxHistoryFeatureToggles {
|
||||
val isSolanaTxHistoryEnabled: Boolean
|
||||
val isNewTxHistoryEnabled: Boolean
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue