Merge "Guest user is last." into tm-qpr-dev

This commit is contained in:
Ale Nijamkin
2022-10-21 18:51:19 +00:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 11 deletions

View File

@@ -220,7 +220,12 @@ constructor(
val result = withContext(backgroundDispatcher) { manager.aliveUsers } val result = withContext(backgroundDispatcher) { manager.aliveUsers }
if (result != null) { if (result != null) {
_userInfos.value = result.sortedBy { it.creationTime } _userInfos.value =
result
// Users should be sorted by ascending creation time.
.sortedBy { it.creationTime }
// The guest user is always last, regardless of creation time.
.sortedBy { it.isGuest }
} }
} }
} }

View File

@@ -110,7 +110,7 @@ class UserRepositoryImplRefactoredTest : UserRepositoryImplTest() {
val thirdExpectedValue = val thirdExpectedValue =
setUpUsers( setUpUsers(
count = 2, count = 2,
hasGuest = true, isLastGuestUser = true,
selectedIndex = 1, selectedIndex = 1,
) )
underTest.refreshUsers() underTest.refreshUsers()
@@ -121,21 +121,25 @@ class UserRepositoryImplRefactoredTest : UserRepositoryImplTest() {
} }
@Test @Test
fun `refreshUsers - sorts by creation time`() = runSelfCancelingTest { fun `refreshUsers - sorts by creation time - guest user last`() = runSelfCancelingTest {
underTest = create(this) underTest = create(this)
val unsortedUsers = val unsortedUsers =
setUpUsers( setUpUsers(
count = 3, count = 3,
selectedIndex = 0, selectedIndex = 0,
isLastGuestUser = true,
)
unsortedUsers[0].creationTime = 999
unsortedUsers[1].creationTime = 900
unsortedUsers[2].creationTime = 950
val expectedUsers =
listOf(
unsortedUsers[1],
unsortedUsers[0],
unsortedUsers[2], // last because this is the guest
) )
unsortedUsers[0].creationTime = 900
unsortedUsers[1].creationTime = 700
unsortedUsers[2].creationTime = 999
val expectedUsers = listOf(unsortedUsers[1], unsortedUsers[0], unsortedUsers[2])
var userInfos: List<UserInfo>? = null var userInfos: List<UserInfo>? = null
var selectedUserInfo: UserInfo? = null
underTest.userInfos.onEach { userInfos = it }.launchIn(this) underTest.userInfos.onEach { userInfos = it }.launchIn(this)
underTest.selectedUserInfo.onEach { selectedUserInfo = it }.launchIn(this)
underTest.refreshUsers() underTest.refreshUsers()
assertThat(userInfos).isEqualTo(expectedUsers) assertThat(userInfos).isEqualTo(expectedUsers)
@@ -143,14 +147,14 @@ class UserRepositoryImplRefactoredTest : UserRepositoryImplTest() {
private fun setUpUsers( private fun setUpUsers(
count: Int, count: Int,
hasGuest: Boolean = false, isLastGuestUser: Boolean = false,
selectedIndex: Int = 0, selectedIndex: Int = 0,
): List<UserInfo> { ): List<UserInfo> {
val userInfos = val userInfos =
(0 until count).map { index -> (0 until count).map { index ->
createUserInfo( createUserInfo(
index, index,
isGuest = hasGuest && index == count - 1, isGuest = isLastGuestUser && index == count - 1,
) )
} }
whenever(manager.aliveUsers).thenReturn(userInfos) whenever(manager.aliveUsers).thenReturn(userInfos)