RoomInviteMembers : add small tests

This commit is contained in:
ganfra 2024-01-05 13:53:02 +01:00
parent 60d015596f
commit 4e06ccd610
2 changed files with 24 additions and 10 deletions

View file

@ -64,6 +64,17 @@ internal class RoomInviteMembersStateProvider : PreviewParameterProvider<RoomInv
) )
) )
), ),
aRoomInviteMembersState(
isSearchActive = true,
canInvite = true,
searchQuery = "@alice:server.org",
searchResults = SearchBarResultState.Results(
persistentListOf(
InvitableUser(aMatrixUser("@alice:server.org"), isUnresolved = true),
)
),
isFetchingSearchResults = true,
),
) )
} }

View file

@ -38,6 +38,8 @@ import io.element.android.libraries.usersearch.api.UserSearchResult
import io.element.android.libraries.usersearch.api.UserSearchResults import io.element.android.libraries.usersearch.api.UserSearchResults
import io.element.android.libraries.usersearch.test.FakeUserRepository import io.element.android.libraries.usersearch.test.FakeUserRepository
import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.WarmUpRule
import io.element.android.tests.testutils.awaitLastSequentialItem
import io.element.android.tests.testutils.consumeItemsUntilPredicate
import io.element.android.tests.testutils.testCoroutineDispatchers import io.element.android.tests.testutils.testCoroutineDispatchers
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentListOf
@ -95,7 +97,7 @@ internal class RoomInviteMembersPresenterTest {
} }
@Test @Test
fun `present - performs search and handles no results`() = runTest { fun `present - performs search and handles empty result list`() = runTest {
val repository = FakeUserRepository() val repository = FakeUserRepository()
val presenter = RoomInviteMembersPresenter( val presenter = RoomInviteMembersPresenter(
userRepository = repository, userRepository = repository,
@ -106,17 +108,18 @@ internal class RoomInviteMembersPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
skipItems(1)
initialState.eventSink(RoomInviteMembersEvents.UpdateSearchQuery("some query")) initialState.eventSink(RoomInviteMembersEvents.UpdateSearchQuery("some query"))
skipItems(1)
assertThat(repository.providedQuery).isEqualTo("some query") assertThat(repository.providedQuery).isEqualTo("some query")
repository.emitResult(UserSearchResults(results = emptyList())) repository.emitResult(UserSearchResults(results = emptyList(), isFetchingSearchResults = true))
skipItems(1) consumeItemsUntilPredicate { it.isFetchingSearchResults }.last().also { state ->
assertThat(state.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
val resultState = awaitItem() assertThat(state.isFetchingSearchResults).isTrue()
assertThat(resultState.searchResults).isInstanceOf(SearchBarResultState.NoResultsFound::class.java) }
repository.emitResult(UserSearchResults(results = emptyList(), isFetchingSearchResults = false))
consumeItemsUntilPredicate { !it.isFetchingSearchResults }.last().also { state ->
assertThat(state.searchResults).isInstanceOf(SearchBarResultState.NoResultsFound::class.java)
assertThat(state.isFetchingSearchResults).isFalse()
}
} }
} }