Present the last added user first
This commit is contained in:
parent
790c2137c7
commit
ddcde735fe
3 changed files with 26 additions and 12 deletions
|
|
@ -75,7 +75,7 @@ class DefaultSelectUsersPresenter(private val isMultiSelectionEnabled: Boolean)
|
|||
return SelectUsersState(
|
||||
searchQuery = searchQuery,
|
||||
searchResults = searchResults.value,
|
||||
selectedUsers = selectedUsers.value,
|
||||
selectedUsers = selectedUsers.value.reversed().toImmutableSet(),
|
||||
isSearchActive = isSearchActive,
|
||||
isMultiSelectionEnabled = isMultiSelectionEnabled,
|
||||
eventSink = ::handleEvents,
|
||||
|
|
|
|||
|
|
@ -95,15 +95,29 @@ class DefaultSelectSingleUserPresenterTests {
|
|||
}.test {
|
||||
val initialState = awaitItem()
|
||||
|
||||
val matrixUser = aMatrixUser()
|
||||
initialState.eventSink(SelectUsersEvents.AddToSelection(matrixUser))
|
||||
val selectionAfterAdd = awaitItem().selectedUsers
|
||||
assertThat(selectionAfterAdd).hasSize(1)
|
||||
assertThat(selectionAfterAdd).contains(matrixUser)
|
||||
val userA = aMatrixUser("userA", "A")
|
||||
val userB = aMatrixUser("userB", "B")
|
||||
initialState.eventSink(SelectUsersEvents.AddToSelection(userA))
|
||||
val selectionAfterAddingA = awaitItem().selectedUsers
|
||||
assertThat(selectionAfterAddingA).hasSize(1)
|
||||
assertThat(selectionAfterAddingA).contains(userA)
|
||||
|
||||
initialState.eventSink(SelectUsersEvents.RemoveFromSelection(matrixUser))
|
||||
val selectionAfterRemove = awaitItem().selectedUsers
|
||||
assertThat(selectionAfterRemove).isEmpty()
|
||||
initialState.eventSink(SelectUsersEvents.AddToSelection(userB))
|
||||
val selectionAfterAddingB = awaitItem().selectedUsers
|
||||
assertThat(selectionAfterAddingB).hasSize(2)
|
||||
assertThat(selectionAfterAddingB).contains(userA)
|
||||
assertThat(selectionAfterAddingB).contains(userB)
|
||||
// the last added user should be presented first
|
||||
assertThat(selectionAfterAddingB.first()).isEqualTo(userB)
|
||||
|
||||
initialState.eventSink(SelectUsersEvents.RemoveFromSelection(userB))
|
||||
val selectionAfterRemovingB = awaitItem().selectedUsers
|
||||
assertThat(selectionAfterRemovingB).hasSize(1)
|
||||
assertThat(selectionAfterRemovingB).contains(userA)
|
||||
|
||||
initialState.eventSink(SelectUsersEvents.RemoveFromSelection(userA))
|
||||
val selectionAfterRemovingA = awaitItem().selectedUsers
|
||||
assertThat(selectionAfterRemovingA).isEmpty()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ open class MatrixUserProvider : PreviewParameterProvider<MatrixUser> {
|
|||
)
|
||||
}
|
||||
|
||||
fun aMatrixUser() = MatrixUser(
|
||||
id = UserId("@id_of_alice:server.org"),
|
||||
username = "Alice",
|
||||
fun aMatrixUser(id: String = "@id_of_alice:server.org", userName: String = "Alice") = MatrixUser(
|
||||
id = UserId(id),
|
||||
username = userName,
|
||||
avatarData = anAvatarData()
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue