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