Updated on 2026-08-14

This commit is contained in:
Tangem 2026-02-02 18:48:42 +04:00
parent a540a98d01
commit 47d119c2da
6 changed files with 69 additions and 1 deletions

View file

@ -24,6 +24,8 @@ import com.tangem.datasource.api.tangemTech.models.orDefault
import com.tangem.datasource.utils.getSyncOrNull
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.withContext
import javax.inject.Inject
import javax.inject.Singleton
@ -77,6 +79,10 @@ internal class DefaultWalletAccountsFetcher @Inject constructor(
return migratedResponse
}
override fun get(userWalletId: UserWalletId): Flow<GetWalletAccountsResponse> {
return getAccountsResponseStore(userWalletId = userWalletId).data.filterNotNull()
}
override suspend fun getSaved(userWalletId: UserWalletId): GetWalletAccountsResponse? {
return getAccountsResponseStore(userWalletId = userWalletId).getSyncOrNull()
}

View file

@ -20,6 +20,7 @@ import com.tangem.datasource.api.tangemTech.models.account.GetWalletAccountsResp
import com.tangem.datasource.api.tangemTech.models.account.SaveWalletAccountsResponse
import com.tangem.datasource.api.tangemTech.models.account.toUserTokensResponse
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.test.core.getEmittedValues
import com.tangem.utils.coroutines.TestingCoroutineDispatcherProvider
import io.mockk.*
import kotlinx.coroutines.flow.MutableStateFlow
@ -340,6 +341,47 @@ class DefaultWalletAccountsFetcherTest {
}
}
@Nested
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
inner class Get {
@Test
fun get() = runTest {
// Arrange
val response = createGetWalletAccountsResponse(userWalletId = userWalletId)
accountsResponseStoreFlow.value = response
// Act
val actual = getEmittedValues(fetcher.get(userWalletId))
// Assert
val expected = response
Truth.assertThat(actual).containsExactly(expected)
coVerifyOrder {
accountsResponseStoreFactory.create(userWalletId)
accountsResponseStore.data
}
}
@Test
fun `get if store is empty`() = runTest {
// Arrange
accountsResponseStoreFlow.value = null
// Act
val actual = getEmittedValues(fetcher.get(userWalletId))
// Assert
Truth.assertThat(actual).isEmpty()
coVerifyOrder {
accountsResponseStoreFactory.create(userWalletId)
accountsResponseStore.data
}
}
}
@Nested
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
inner class Store {