mirror of
https://github.com/bitwarden/android.git
synced 2025-03-16 19:28:44 +03:00
BIT-726: Stub loading and errors for logging in (#93)
This commit is contained in:
parent
38155dbefd
commit
f57780bfe0
2 changed files with 21 additions and 3 deletions
|
@ -89,6 +89,11 @@ class LoginViewModel @Inject constructor(
|
|||
private fun attemptLogin(captchaToken: String?) {
|
||||
viewModelScope.launch {
|
||||
// TODO: show progress here BIT-320
|
||||
sendEvent(
|
||||
event = LoginEvent.ShowToast(
|
||||
message = "Loading...",
|
||||
),
|
||||
)
|
||||
val result = authRepository.login(
|
||||
email = mutableStateFlow.value.emailAddress,
|
||||
password = mutableStateFlow.value.passwordInput,
|
||||
|
@ -96,7 +101,13 @@ class LoginViewModel @Inject constructor(
|
|||
)
|
||||
when (result) {
|
||||
// TODO: show an error here BIT-320
|
||||
LoginResult.Error -> Unit
|
||||
LoginResult.Error -> {
|
||||
sendEvent(
|
||||
event = LoginEvent.ShowToast(
|
||||
message = "Error when logging in",
|
||||
),
|
||||
)
|
||||
}
|
||||
// No action required on success, root nav will navigate to logged in state
|
||||
LoginResult.Success -> Unit
|
||||
is LoginResult.CaptchaRequired -> {
|
||||
|
|
|
@ -92,7 +92,7 @@ class LoginViewModelTest : BaseViewModelTest() {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `LoginButtonClick login returns error should do nothing`() = runTest {
|
||||
fun `LoginButtonClick login returns error should emit error ShowToast`() = runTest {
|
||||
// TODO: handle and display errors (BIT-320)
|
||||
val authRepository = mockk<AuthRepository> {
|
||||
coEvery {
|
||||
|
@ -111,6 +111,11 @@ class LoginViewModelTest : BaseViewModelTest() {
|
|||
viewModel.eventFlow.test {
|
||||
viewModel.actionChannel.trySend(LoginAction.LoginButtonClick)
|
||||
assertEquals(DEFAULT_STATE, viewModel.stateFlow.value)
|
||||
assertEquals(LoginEvent.ShowToast("Loading..."), awaitItem())
|
||||
assertEquals(
|
||||
LoginEvent.ShowToast("Error when logging in"),
|
||||
awaitItem(),
|
||||
)
|
||||
}
|
||||
coVerify {
|
||||
authRepository.login(email = "test@gmail.com", password = "", captchaToken = null)
|
||||
|
@ -118,7 +123,7 @@ class LoginViewModelTest : BaseViewModelTest() {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `LoginButtonClick login returns success should do nothing`() = runTest {
|
||||
fun `LoginButtonClick login returns success should emit loading ShowToast`() = runTest {
|
||||
val authRepository = mockk<AuthRepository> {
|
||||
coEvery { login("test@gmail.com", "", captchaToken = null) } returns LoginResult.Success
|
||||
every { captchaTokenResultFlow } returns flowOf()
|
||||
|
@ -130,6 +135,7 @@ class LoginViewModelTest : BaseViewModelTest() {
|
|||
viewModel.eventFlow.test {
|
||||
viewModel.actionChannel.trySend(LoginAction.LoginButtonClick)
|
||||
assertEquals(DEFAULT_STATE, viewModel.stateFlow.value)
|
||||
assertEquals(LoginEvent.ShowToast("Loading..."), awaitItem())
|
||||
}
|
||||
coVerify {
|
||||
authRepository.login(email = "test@gmail.com", password = "", captchaToken = null)
|
||||
|
@ -157,6 +163,7 @@ class LoginViewModelTest : BaseViewModelTest() {
|
|||
viewModel.eventFlow.test {
|
||||
viewModel.actionChannel.trySend(LoginAction.LoginButtonClick)
|
||||
assertEquals(DEFAULT_STATE, viewModel.stateFlow.value)
|
||||
assertEquals(LoginEvent.ShowToast("Loading..."), awaitItem())
|
||||
assertEquals(LoginEvent.NavigateToCaptcha(intent = mockkIntent), awaitItem())
|
||||
}
|
||||
coVerify {
|
||||
|
|
Loading…
Add table
Reference in a new issue