BIT-726: Stub loading and errors for logging in (#93)

This commit is contained in:
Ramsey Smith 2023-10-03 16:29:49 -06:00 committed by Álison Fernandes
parent 38155dbefd
commit f57780bfe0
2 changed files with 21 additions and 3 deletions

View file

@ -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 -> {

View file

@ -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 {