Make ChangeServerPresenter.submit fail as expected (#236)

* Make `ChangeServerPresenter.submit` fail as expected

* Fix tests to prevent this from ever happening again
This commit is contained in:
Jorge Martin Espinosa 2023-03-23 15:19:18 +01:00 committed by GitHub
parent fc73b2b8f9
commit 76ade37355
3 changed files with 6 additions and 10 deletions

View file

@ -69,7 +69,7 @@ class ChangeServerPresenter @Inject constructor(private val authenticationServic
private fun CoroutineScope.submit(homeserverUrl: MutableState<String>, changeServerAction: MutableState<Async<Unit>>) = launch {
suspend {
val domain = tryOrNull { URL(homeserverUrl.value) }?.host ?: homeserverUrl.value
authenticationService.setHomeserver(domain)
authenticationService.setHomeserver(domain).getOrThrow()
homeserverUrl.value = domain
}.execute(changeServerAction, errorMapping = ChangeServerError::from)
}

View file

@ -134,6 +134,7 @@ class ChangeServerPresenterTest {
val initialState = awaitItem()
authServer.givenChangeServerError(Throwable())
initialState.eventSink.invoke(ChangeServerEvents.Submit)
skipItems(1) // Loading
val failureState = awaitItem()
assertThat(failureState.submitEnabled).isFalse()
assertThat(failureState.changeServerAction).isInstanceOf(Async.Failure::class.java)
@ -155,6 +156,8 @@ class ChangeServerPresenterTest {
authenticationService.givenChangeServerError(A_THROWABLE)
initialState.eventSink(ChangeServerEvents.Submit)
skipItems(1) // Loading
// Check an error was returned
val submittedState = awaitItem()
assertThat(submittedState.changeServerAction).isInstanceOf(Async.Failure::class.java)