diff options
| -rw-r--r-- | packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt index 26f342aa05ce..468c39daa282 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt @@ -22,7 +22,12 @@ import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState import com.android.compose.animation.scene.SceneKey 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.coroutines.collectLastValue import com.android.systemui.flags.EnableSceneContainer +import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository +import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes @@ -31,77 +36,93 @@ import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Assume import org.junit.Before -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) -@Ignore("b/328827631") @EnableSceneContainer class ShadeBackActionInteractorImplTest : SysuiTestCase() { val kosmos = testKosmos() val testScope = kosmos.testScope - val sceneInteractor = kosmos.sceneInteractor - val underTest = kosmos.shadeBackActionInteractor + val sceneInteractor by lazy { kosmos.sceneInteractor } + val shadeInteractor by lazy { kosmos.shadeInteractor } + val fakeAuthenticationRepository by lazy { kosmos.fakeAuthenticationRepository } + val deviceEntryFingerprintAuthRepository by lazy { kosmos.deviceEntryFingerprintAuthRepository } + + lateinit var underTest: ShadeBackActionInteractor @Before - fun ignoreSplitShade() { + fun ignoreSplitShadeAndSetup() { Assume.assumeFalse(Utilities.isLargeScreen(kosmos.applicationContext)) + underTest = kosmos.shadeBackActionInteractor } @Test fun animateCollapseQs_notOnQs() = testScope.runTest { + val actual by collectLastValue(sceneInteractor.currentScene) setScene(Scenes.Shade) underTest.animateCollapseQs(true) runCurrent() - assertThat(sceneInteractor.currentScene.value).isEqualTo(Scenes.Shade) + assertThat(actual).isEqualTo(Scenes.Shade) } @Test fun animateCollapseQs_fullyCollapse_entered() = testScope.runTest { + val actual by collectLastValue(sceneInteractor.currentScene) enterDevice() setScene(Scenes.QuickSettings) underTest.animateCollapseQs(true) runCurrent() - assertThat(sceneInteractor.currentScene.value).isEqualTo(Scenes.Gone) + assertThat(actual).isEqualTo(Scenes.Gone) } @Test fun animateCollapseQs_fullyCollapse_locked() = testScope.runTest { + val actual by collectLastValue(sceneInteractor.currentScene) setScene(Scenes.QuickSettings) underTest.animateCollapseQs(true) runCurrent() - assertThat(sceneInteractor.currentScene.value).isEqualTo(Scenes.Lockscreen) + assertThat(actual).isEqualTo(Scenes.Lockscreen) } @Test fun animateCollapseQs_notFullyCollapse() = testScope.runTest { + val actual by collectLastValue(sceneInteractor.currentScene) setScene(Scenes.QuickSettings) underTest.animateCollapseQs(false) runCurrent() - assertThat(sceneInteractor.currentScene.value).isEqualTo(Scenes.Shade) + assertThat(actual).isEqualTo(Scenes.Shade) } - private fun enterDevice() { - testScope.runCurrent() + private fun TestScope.enterDevice() { + // configure device unlocked state + fakeAuthenticationRepository.setAuthenticationMethod(AuthenticationMethodModel.Pin) + runCurrent() + deviceEntryFingerprintAuthRepository.setAuthenticationStatus( + SuccessFingerprintAuthenticationStatus(0, true) + ) + runCurrent() setScene(Scenes.Gone) } - private fun setScene(key: SceneKey) { + private fun TestScope.setScene(key: SceneKey) { + val actual by collectLastValue(sceneInteractor.currentScene) sceneInteractor.changeScene(key, "test") sceneInteractor.setTransitionState( MutableStateFlow<ObservableTransitionState>(ObservableTransitionState.Idle(key)) ) - testScope.runCurrent() + runCurrent() + assertThat(actual).isEqualTo(key) } } |