Skip to content
Prev Previous commit
Next Next commit
Added AccountsSummaryViewModel onRefresh, onSearch tests
  • Loading branch information
WingEraser committed Mar 7, 2025
commit d1b9a31b56c738882e9db9961a3b313739903c61
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ import kotlin.random.Random
*/
object AccountSummaryGenerator {

fun generateAccountSummary(id: String = randomString()): AccountSummary {
fun generateAccountSummary(
id: String = randomString(),
displayName: String = randomString()
): AccountSummary {
return AccountSummary {
currentAccounts = CurrentAccounts {
products = listOf(
Expand Down Expand Up @@ -64,7 +67,7 @@ object AccountSummaryGenerator {
externalStateId = "Active"
state = "Active"
}
displayName = "Alpha"
this.displayName = displayName
}
)
name = "Current Accounts"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.backbase.accounts_journey.data.usecase.AccountsUseCase
import com.backbase.accounts_journey.generator.AccountSummaryGenerator
import com.backbase.accounts_journey.presentation.accountlist.mapper.AccountUiMapper
import com.backbase.android.test_data.CoroutineTest
import com.backbase.android.test_data.StringGenerator.randomString
import io.mockk.coEvery
import io.mockk.mockk
import kotlinx.coroutines.ExperimentalCoroutinesApi
Expand Down Expand Up @@ -54,4 +55,46 @@ class AccountListViewModelTest : CoroutineTest {
val uiState = viewModel.uiState.value
then(uiState.error).isNotNull
}

@Test
fun `should get account summary when refresh`() = runTest {
val accountSummary = AccountSummaryGenerator.generateAccountSummary()
coEvery {
accountsUseCase.getAccountSummary(false)
} returns Result.success(accountSummary)

viewModel.onEvent(AccountListEvent.OnRefresh)

val uiState = viewModel.uiState.value
then(uiState.accountSummary).isNotEmpty
}

@Test
fun `should get account summary when search`() = runTest {
val query = randomString()
val accountSummary = AccountSummaryGenerator.generateAccountSummary(displayName = query)
coEvery {
accountsUseCase.getAccountSummary()
} returns Result.success(accountSummary)

viewModel.onEvent(AccountListEvent.OnSearch(query))

val uiState = viewModel.uiState.value
// Header + List Item = 2
then(uiState.accountSummary.size).isEqualTo(2)
}

@Test
fun `should get empty account summary when nothing found`() = runTest {
val query = randomString()
val accountSummary = AccountSummaryGenerator.generateAccountSummary(displayName = query)
coEvery {
accountsUseCase.getAccountSummary()
} returns Result.success(accountSummary)

viewModel.onEvent(AccountListEvent.OnSearch(randomString()))

val uiState = viewModel.uiState.value
then(uiState.accountSummary.size).isZero
}
}