Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86c3a4f4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Dual Shade] Fix SceneContainerViewModelTest for Dual Shade on." into main

parents fad821e3 e27a84fa
Loading
Loading
Loading
Loading
+26 −41
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.kosmos.collectLastValue
import com.android.systemui.kosmos.runCurrent
import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.power.data.repository.fakePowerRepository
import com.android.systemui.scene.domain.interactor.sceneInteractor
@@ -48,7 +49,6 @@ import com.android.systemui.statusbar.data.repository.fakeRemoteInputRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import org.junit.Before
import org.junit.Test
@@ -56,15 +56,12 @@ import org.junit.runner.RunWith
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock

@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
class SceneContainerViewModelTest : SysuiTestCase() {

    private val kosmos = testKosmos()
    private val testScope by lazy { kosmos.testScope }
    private val falsingManager by lazy { kosmos.fakeFalsingManager }
    private val kosmos = testKosmos().useUnconfinedTestDispatcher()
    private val view = mock<View>()

    private lateinit var underTest: SceneContainerViewModel
@@ -75,28 +72,21 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Before
    fun setUp() {
        underTest =
            kosmos.sceneContainerViewModelFactory.create(
                view,
                { motionEventHandler ->
            kosmos.sceneContainerViewModelFactory.create(view) { motionEventHandler ->
                this@SceneContainerViewModelTest.motionEventHandler = motionEventHandler
                },
            )
            }
        activationJob = Job()
        underTest.activateIn(testScope, activationJob)
        underTest.activateIn(kosmos.testScope, activationJob)
    }

    @Test
    fun activate_setsMotionEventHandler() =
        kosmos.runTest {
            runCurrent()
            assertThat(motionEventHandler).isNotNull()
        }
        kosmos.runTest { assertThat(motionEventHandler).isNotNull() }

    @Test
    fun deactivate_clearsMotionEventHandler() =
        kosmos.runTest {
            activationJob.cancel()
            runCurrent()

            assertThat(motionEventHandler).isNull()
        }
@@ -107,17 +97,16 @@ class SceneContainerViewModelTest : SysuiTestCase() {
            assertThat(underTest.isVisible).isTrue()

            sceneInteractor.setVisible(false, "reason")
            runCurrent()
            assertThat(underTest.isVisible).isFalse()

            sceneInteractor.setVisible(true, "reason")
            runCurrent()
            assertThat(underTest.isVisible).isTrue()
        }

    @Test
    fun sceneTransition() =
        kosmos.runTest {
            enableSingleShade()
            val currentScene by collectLastValue(underTest.currentScene)
            assertThat(currentScene).isEqualTo(Scenes.Lockscreen)

@@ -131,7 +120,6 @@ class SceneContainerViewModelTest : SysuiTestCase() {
        kosmos.runTest {
            val currentScene by collectLastValue(underTest.currentScene)
            fakeSceneDataSource.changeScene(toScene = Scenes.Gone)
            runCurrent()
            assertThat(currentScene).isEqualTo(Scenes.Gone)

            sceneContainerConfig.sceneKeys
@@ -148,7 +136,6 @@ class SceneContainerViewModelTest : SysuiTestCase() {
        kosmos.runTest {
            val currentScene by collectLastValue(underTest.currentScene)
            fakeSceneDataSource.changeScene(toScene = Scenes.Lockscreen)
            runCurrent()
            assertThat(currentScene).isEqualTo(Scenes.Lockscreen)

            sceneContainerConfig.sceneKeys
@@ -163,7 +150,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun canChangeScene_whenNotAllowed_fromLockscreen_toFalsingProtectedScenes_returnsFalse() =
        kosmos.runTest {
            falsingManager.setIsFalseTouch(true)
            fakeFalsingManager.setIsFalseTouch(true)
            val currentScene by collectLastValue(underTest.currentScene)
            fakeSceneDataSource.changeScene(toScene = Scenes.Lockscreen)
            runCurrent()
@@ -185,7 +172,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun canChangeScene_whenNotAllowed_fromLockscreen_toFalsingUnprotectedScenes_returnsTrue() =
        kosmos.runTest {
            falsingManager.setIsFalseTouch(true)
            fakeFalsingManager.setIsFalseTouch(true)
            val currentScene by collectLastValue(underTest.currentScene)
            fakeSceneDataSource.changeScene(toScene = Scenes.Lockscreen)
            runCurrent()
@@ -206,7 +193,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun canChangeScene_whenNotAllowed_fromGone_toAnyOtherScene_returnsTrue() =
        kosmos.runTest {
            falsingManager.setIsFalseTouch(true)
            fakeFalsingManager.setIsFalseTouch(true)
            val currentScene by collectLastValue(underTest.currentScene)
            fakeSceneDataSource.changeScene(toScene = Scenes.Gone)
            runCurrent()
@@ -254,7 +241,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun canShowOrReplaceOverlay_whenNotAllowed_whileOnLockscreen_returnsFalse() =
        kosmos.runTest {
            falsingManager.setIsFalseTouch(true)
            fakeFalsingManager.setIsFalseTouch(true)
            val currentScene by collectLastValue(underTest.currentScene)
            fakeSceneDataSource.changeScene(toScene = Scenes.Lockscreen)
            runCurrent()
@@ -270,7 +257,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun canShowOrReplaceOverlay_whenNotAllowed_whileOnGone_returnsTrue() =
        kosmos.runTest {
            falsingManager.setIsFalseTouch(true)
            fakeFalsingManager.setIsFalseTouch(true)
            val currentScene by collectLastValue(underTest.currentScene)
            fakeSceneDataSource.changeScene(toScene = Scenes.Gone)
            runCurrent()
@@ -286,9 +273,9 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun userInput() =
        kosmos.runTest {
            assertThat(kosmos.fakePowerRepository.userTouchRegistered).isFalse()
            assertThat(fakePowerRepository.userTouchRegistered).isFalse()
            underTest.onMotionEvent(mock())
            assertThat(kosmos.fakePowerRepository.userTouchRegistered).isTrue()
            assertThat(fakePowerRepository.userTouchRegistered).isTrue()
        }

    @Test
@@ -324,14 +311,11 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    fun remoteUserInteraction_keepsContainerVisible() =
        kosmos.runTest {
            sceneInteractor.setVisible(false, "reason")
            runCurrent()
            assertThat(underTest.isVisible).isFalse()
            sceneInteractor.onRemoteUserInputStarted("reason")
            runCurrent()
            assertThat(underTest.isVisible).isTrue()

            underTest.onMotionEvent(mock { on { actionMasked } doReturn MotionEvent.ACTION_UP })
            runCurrent()

            assertThat(underTest.isVisible).isFalse()
        }
@@ -348,7 +332,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
                underTest.getActionableContentKey(
                    currentScene = checkNotNull(currentScene),
                    currentOverlays = checkNotNull(currentOverlays),
                    overlayByKey = kosmos.fakeOverlaysByKeys,
                    overlayByKey = fakeOverlaysByKeys,
                )

            assertThat(actionableContentKey).isEqualTo(Scenes.Lockscreen)
@@ -357,6 +341,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun getActionableContentKey_multipleOverlays_returnsTopOverlay() =
        kosmos.runTest {
            enableDualShade()
            val currentScene by collectLastValue(underTest.currentScene)
            val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
            fakeSceneDataSource.showOverlay(Overlays.QuickSettingsShade)
@@ -369,7 +354,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
                underTest.getActionableContentKey(
                    currentScene = checkNotNull(currentScene),
                    currentOverlays = checkNotNull(currentOverlays),
                    overlayByKey = kosmos.fakeOverlaysByKeys,
                    overlayByKey = fakeOverlaysByKeys,
                )

            assertThat(actionableContentKey).isEqualTo(Overlays.QuickSettingsShade)
@@ -378,8 +363,8 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun edgeDetector_singleShade_usesDefaultEdgeDetector() =
        kosmos.runTest {
            val shadeMode by collectLastValue(kosmos.shadeMode)
            kosmos.enableSingleShade()
            val shadeMode by collectLastValue(shadeMode)
            enableSingleShade()

            assertThat(shadeMode).isEqualTo(ShadeMode.Single)
            assertThat(underTest.swipeSourceDetector).isEqualTo(DefaultEdgeDetector)
@@ -388,8 +373,8 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun edgeDetector_splitShade_usesDefaultEdgeDetector() =
        kosmos.runTest {
            val shadeMode by collectLastValue(kosmos.shadeMode)
            kosmos.enableSplitShade()
            val shadeMode by collectLastValue(shadeMode)
            enableSplitShade()

            assertThat(shadeMode).isEqualTo(ShadeMode.Split)
            assertThat(underTest.swipeSourceDetector).isEqualTo(DefaultEdgeDetector)
@@ -398,8 +383,8 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun edgeDetector_dualShade_narrowScreen_usesSceneContainerSwipeDetector() =
        kosmos.runTest {
            val shadeMode by collectLastValue(kosmos.shadeMode)
            kosmos.enableDualShade(wideLayout = false)
            val shadeMode by collectLastValue(shadeMode)
            enableDualShade(wideLayout = false)

            assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
            assertThat(underTest.swipeSourceDetector)
@@ -409,8 +394,8 @@ class SceneContainerViewModelTest : SysuiTestCase() {
    @Test
    fun edgeDetector_dualShade_wideScreen_usesSceneContainerSwipeDetector() =
        kosmos.runTest {
            val shadeMode by collectLastValue(kosmos.shadeMode)
            kosmos.enableDualShade(wideLayout = true)
            val shadeMode by collectLastValue(shadeMode)
            enableDualShade(wideLayout = true)

            assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
            assertThat(underTest.swipeSourceDetector)