Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModelTest.kt +9 −31 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.systemui.keyguard.ui.viewmodel import android.content.pm.UserInfo import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading @@ -27,21 +25,20 @@ import com.android.systemui.Flags.FLAG_COMMUNAL_HUB import com.android.systemui.SysuiTestCase import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository import com.android.systemui.authentication.shared.model.AuthenticationMethodModel import com.android.systemui.communal.domain.interactor.communalSettingsInteractor import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.communal.domain.interactor.setCommunalAvailable import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testScope import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel import com.android.systemui.testKosmos import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith Loading Loading @@ -85,35 +82,21 @@ class LockscreenSceneViewModelTest : SysuiTestCase() { @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun leftTransitionSceneKey_communalIsEnabled_communal() = fun leftTransitionSceneKey_communalIsAvailable_communal() = testScope.runTest { with(kosmos.fakeUserRepository) { setUserInfos(listOf(PRIMARY_USER)) setSelectedUserInfo(PRIMARY_USER) } kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true) val leftDestinationSceneKey by collectLastValue(underTest.leftDestinationSceneKey) assertThat(leftDestinationSceneKey).isEqualTo(SceneKey.Communal) } @DisableFlags(FLAG_COMMUNAL_HUB) @Test fun leftTransitionSceneKey_communalIsDisabled_null() = testScope.runTest { with(kosmos.fakeUserRepository) { setUserInfos(listOf(PRIMARY_USER)) setSelectedUserInfo(PRIMARY_USER) } kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, false) val leftDestinationSceneKey by collectLastValue(underTest.leftDestinationSceneKey) assertThat(leftDestinationSceneKey).isNull() kosmos.setCommunalAvailable(true) runCurrent() assertThat(leftDestinationSceneKey).isEqualTo(SceneKey.Communal) } private fun createLockscreenSceneViewModel(): LockscreenSceneViewModel { return LockscreenSceneViewModel( applicationScope = testScope.backgroundScope, deviceEntryInteractor = kosmos.deviceEntryInteractor, communalSettingsInteractor = kosmos.communalSettingsInteractor, communalInteractor = kosmos.communalInteractor, longPress = KeyguardLongPressViewModel( interactor = mock(), Loading @@ -121,9 +104,4 @@ class LockscreenSceneViewModelTest : SysuiTestCase() { notifications = kosmos.notificationsPlaceholderViewModel, ) } private companion object { val PRIMARY_USER = UserInfo(/* id= */ 0, /* name= */ "primary user", /* flags= */ UserInfo.FLAG_MAIN) } } packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ import com.android.systemui.bouncer.ui.viewmodel.PinBouncerViewModel import com.android.systemui.bouncer.ui.viewmodel.bouncerViewModel import com.android.systemui.classifier.domain.interactor.falsingInteractor import com.android.systemui.classifier.falsingCollector import com.android.systemui.communal.domain.interactor.communalSettingsInteractor import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor Loading Loading @@ -130,7 +130,7 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { private val sceneInteractor by lazy { kosmos.sceneInteractor } private val authenticationInteractor by lazy { kosmos.authenticationInteractor } private val deviceEntryInteractor by lazy { kosmos.deviceEntryInteractor } private val communalSettingsInteractor by lazy { kosmos.communalSettingsInteractor } private val communalInteractor by lazy { kosmos.communalInteractor } private val transitionState by lazy { MutableStateFlow<ObservableTransitionState>( Loading @@ -155,7 +155,7 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { LockscreenSceneViewModel( applicationScope = testScope.backgroundScope, deviceEntryInteractor = deviceEntryInteractor, communalSettingsInteractor = communalSettingsInteractor, communalInteractor = communalInteractor, longPress = KeyguardLongPressViewModel( interactor = mock(), Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModel.kt +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.keyguard.ui.viewmodel import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor import com.android.systemui.communal.domain.interactor.CommunalInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor Loading @@ -36,7 +36,7 @@ class LockscreenSceneViewModel constructor( @Application applicationScope: CoroutineScope, deviceEntryInteractor: DeviceEntryInteractor, communalSettingsInteractor: CommunalSettingsInteractor, communalInteractor: CommunalInteractor, val longPress: KeyguardLongPressViewModel, val notifications: NotificationsPlaceholderViewModel, ) { Loading @@ -56,7 +56,7 @@ constructor( /** The key of the scene we should switch to when swiping left. */ val leftDestinationSceneKey: StateFlow<SceneKey?> = communalSettingsInteractor.isCommunalEnabled communalInteractor.isCommunalAvailable .map { available -> if (available) SceneKey.Communal else null } .stateIn( scope = applicationScope, Loading packages/SystemUI/tests/utils/src/com/android/systemui/communal/domain/interactor/CommunalInteractorKosmos.kt +15 −0 Original line number Diff line number Diff line Loading @@ -21,12 +21,16 @@ import com.android.systemui.communal.data.repository.communalPrefsRepository import com.android.systemui.communal.data.repository.communalRepository import com.android.systemui.communal.data.repository.communalWidgetRepository import com.android.systemui.communal.widgets.EditWidgetsActivityStarter import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.domain.interactor.keyguardInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.log.logcatLogBuffer import com.android.systemui.smartspace.data.repository.smartspaceRepository import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.util.mockito.mock val Kosmos.communalInteractor by Fixture { Loading @@ -47,3 +51,14 @@ val Kosmos.communalInteractor by Fixture { } val Kosmos.editWidgetsActivityStarter by Fixture<EditWidgetsActivityStarter> { mock() } suspend fun Kosmos.setCommunalAvailable(available: Boolean) { fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, available) if (available) { fakeUserRepository.asMainUser() with(fakeKeyguardRepository) { setIsEncryptedOrLockdown(false) setKeyguardShowing(true) } } } packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt +14 −1 Original line number Diff line number Diff line Loading @@ -39,13 +39,19 @@ class FakeUserRepository @Inject constructor() : UserRepository { // User id to represent a non system (human) user id. We presume this is the main user. private const val MAIN_USER_ID = 10 private val DEFAULT_SELECTED_USER = 0 private const val DEFAULT_SELECTED_USER = 0 private val DEFAULT_SELECTED_USER_INFO = UserInfo( /* id= */ DEFAULT_SELECTED_USER, /* name= */ "default selected user", /* flags= */ 0, ) private val MAIN_USER = UserInfo( /* id= */ MAIN_USER_ID, /* name= */ "main user", /* flags= */ UserInfo.FLAG_MAIN, ) } private val _userSwitcherSettings = MutableStateFlow(UserSwitcherSettingsModel()) Loading Loading @@ -113,6 +119,13 @@ class FakeUserRepository @Inject constructor() : UserRepository { yield() } /** Makes the current user [MAIN_USER]. */ suspend fun asMainUser(): UserInfo { setUserInfos(listOf(MAIN_USER)) setSelectedUserInfo(MAIN_USER) return MAIN_USER } suspend fun setSettings(settings: UserSwitcherSettingsModel) { _userSwitcherSettings.value = settings yield() Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModelTest.kt +9 −31 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.systemui.keyguard.ui.viewmodel import android.content.pm.UserInfo import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading @@ -27,21 +25,20 @@ import com.android.systemui.Flags.FLAG_COMMUNAL_HUB import com.android.systemui.SysuiTestCase import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository import com.android.systemui.authentication.shared.model.AuthenticationMethodModel import com.android.systemui.communal.domain.interactor.communalSettingsInteractor import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.communal.domain.interactor.setCommunalAvailable import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testScope import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel import com.android.systemui.testKosmos import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith Loading Loading @@ -85,35 +82,21 @@ class LockscreenSceneViewModelTest : SysuiTestCase() { @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun leftTransitionSceneKey_communalIsEnabled_communal() = fun leftTransitionSceneKey_communalIsAvailable_communal() = testScope.runTest { with(kosmos.fakeUserRepository) { setUserInfos(listOf(PRIMARY_USER)) setSelectedUserInfo(PRIMARY_USER) } kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true) val leftDestinationSceneKey by collectLastValue(underTest.leftDestinationSceneKey) assertThat(leftDestinationSceneKey).isEqualTo(SceneKey.Communal) } @DisableFlags(FLAG_COMMUNAL_HUB) @Test fun leftTransitionSceneKey_communalIsDisabled_null() = testScope.runTest { with(kosmos.fakeUserRepository) { setUserInfos(listOf(PRIMARY_USER)) setSelectedUserInfo(PRIMARY_USER) } kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, false) val leftDestinationSceneKey by collectLastValue(underTest.leftDestinationSceneKey) assertThat(leftDestinationSceneKey).isNull() kosmos.setCommunalAvailable(true) runCurrent() assertThat(leftDestinationSceneKey).isEqualTo(SceneKey.Communal) } private fun createLockscreenSceneViewModel(): LockscreenSceneViewModel { return LockscreenSceneViewModel( applicationScope = testScope.backgroundScope, deviceEntryInteractor = kosmos.deviceEntryInteractor, communalSettingsInteractor = kosmos.communalSettingsInteractor, communalInteractor = kosmos.communalInteractor, longPress = KeyguardLongPressViewModel( interactor = mock(), Loading @@ -121,9 +104,4 @@ class LockscreenSceneViewModelTest : SysuiTestCase() { notifications = kosmos.notificationsPlaceholderViewModel, ) } private companion object { val PRIMARY_USER = UserInfo(/* id= */ 0, /* name= */ "primary user", /* flags= */ UserInfo.FLAG_MAIN) } }
packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ import com.android.systemui.bouncer.ui.viewmodel.PinBouncerViewModel import com.android.systemui.bouncer.ui.viewmodel.bouncerViewModel import com.android.systemui.classifier.domain.interactor.falsingInteractor import com.android.systemui.classifier.falsingCollector import com.android.systemui.communal.domain.interactor.communalSettingsInteractor import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor Loading Loading @@ -130,7 +130,7 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { private val sceneInteractor by lazy { kosmos.sceneInteractor } private val authenticationInteractor by lazy { kosmos.authenticationInteractor } private val deviceEntryInteractor by lazy { kosmos.deviceEntryInteractor } private val communalSettingsInteractor by lazy { kosmos.communalSettingsInteractor } private val communalInteractor by lazy { kosmos.communalInteractor } private val transitionState by lazy { MutableStateFlow<ObservableTransitionState>( Loading @@ -155,7 +155,7 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { LockscreenSceneViewModel( applicationScope = testScope.backgroundScope, deviceEntryInteractor = deviceEntryInteractor, communalSettingsInteractor = communalSettingsInteractor, communalInteractor = communalInteractor, longPress = KeyguardLongPressViewModel( interactor = mock(), Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModel.kt +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.keyguard.ui.viewmodel import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor import com.android.systemui.communal.domain.interactor.CommunalInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor Loading @@ -36,7 +36,7 @@ class LockscreenSceneViewModel constructor( @Application applicationScope: CoroutineScope, deviceEntryInteractor: DeviceEntryInteractor, communalSettingsInteractor: CommunalSettingsInteractor, communalInteractor: CommunalInteractor, val longPress: KeyguardLongPressViewModel, val notifications: NotificationsPlaceholderViewModel, ) { Loading @@ -56,7 +56,7 @@ constructor( /** The key of the scene we should switch to when swiping left. */ val leftDestinationSceneKey: StateFlow<SceneKey?> = communalSettingsInteractor.isCommunalEnabled communalInteractor.isCommunalAvailable .map { available -> if (available) SceneKey.Communal else null } .stateIn( scope = applicationScope, Loading
packages/SystemUI/tests/utils/src/com/android/systemui/communal/domain/interactor/CommunalInteractorKosmos.kt +15 −0 Original line number Diff line number Diff line Loading @@ -21,12 +21,16 @@ import com.android.systemui.communal.data.repository.communalPrefsRepository import com.android.systemui.communal.data.repository.communalRepository import com.android.systemui.communal.data.repository.communalWidgetRepository import com.android.systemui.communal.widgets.EditWidgetsActivityStarter import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.domain.interactor.keyguardInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.log.logcatLogBuffer import com.android.systemui.smartspace.data.repository.smartspaceRepository import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.util.mockito.mock val Kosmos.communalInteractor by Fixture { Loading @@ -47,3 +51,14 @@ val Kosmos.communalInteractor by Fixture { } val Kosmos.editWidgetsActivityStarter by Fixture<EditWidgetsActivityStarter> { mock() } suspend fun Kosmos.setCommunalAvailable(available: Boolean) { fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, available) if (available) { fakeUserRepository.asMainUser() with(fakeKeyguardRepository) { setIsEncryptedOrLockdown(false) setKeyguardShowing(true) } } }
packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt +14 −1 Original line number Diff line number Diff line Loading @@ -39,13 +39,19 @@ class FakeUserRepository @Inject constructor() : UserRepository { // User id to represent a non system (human) user id. We presume this is the main user. private const val MAIN_USER_ID = 10 private val DEFAULT_SELECTED_USER = 0 private const val DEFAULT_SELECTED_USER = 0 private val DEFAULT_SELECTED_USER_INFO = UserInfo( /* id= */ DEFAULT_SELECTED_USER, /* name= */ "default selected user", /* flags= */ 0, ) private val MAIN_USER = UserInfo( /* id= */ MAIN_USER_ID, /* name= */ "main user", /* flags= */ UserInfo.FLAG_MAIN, ) } private val _userSwitcherSettings = MutableStateFlow(UserSwitcherSettingsModel()) Loading Loading @@ -113,6 +119,13 @@ class FakeUserRepository @Inject constructor() : UserRepository { yield() } /** Makes the current user [MAIN_USER]. */ suspend fun asMainUser(): UserInfo { setUserInfos(listOf(MAIN_USER)) setSelectedUserInfo(MAIN_USER) return MAIN_USER } suspend fun setSettings(settings: UserSwitcherSettingsModel) { _userSwitcherSettings.value = settings yield() Loading