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

Commit bec15ad1 authored by Franciszek Juras's avatar Franciszek Juras
Browse files

[Flexiglass] Add tests for closing the shade with back button

Add asserts for Back action where Swipe.Up actions is tested
as they have the same role.
Add handling of ToSplitShade transition to Back action to replicate
Swipe.Up behavior.

Bug: 430910634
Test: atest ShadeUserActionsViewModelTest
Flag: com.android.systemui.scene_container
Change-Id: Iaf4b6dcfb55d63c7211ecb6a70a2896b1353a3ad
parent da353650
Loading
Loading
Loading
Loading
+31 −10
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.shade.ui.viewmodel
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.Back
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.Swipe
@@ -80,7 +81,7 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {
    }

    @Test
    fun upTransitionSceneKey_deviceLocked_lockScreen() =
    fun upOrBackTransitionSceneKey_deviceLocked_lockScreen() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val homeScene by collectLastValue(homeSceneFamilyResolver.resolvedScene)
@@ -88,11 +89,13 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat((actions?.get(Back) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
        }

    @Test
    fun upTransitionSceneKey_deviceUnlocked_gone() =
    fun upOrBackTransitionSceneKey_deviceUnlocked_gone() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val homeScene by collectLastValue(homeSceneFamilyResolver.resolvedScene)
@@ -101,11 +104,13 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat((actions?.get(Back) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat(homeScene).isEqualTo(Scenes.Gone)
        }

    @Test
    fun upTransitionSceneKey_keyguardDisabled_gone() =
    fun upOrBackTransitionSceneKey_keyguardDisabled_gone() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
@@ -114,11 +119,13 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat((actions?.get(Back) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat(homeScene).isEqualTo(Scenes.Gone)
        }

    @Test
    fun upTransitionSceneKey_authMethodSwipe_lockscreenNotDismissed_goesToLockscreen() =
    fun upOrBackTransitionSceneKey_authMethodSwipe_lockscreenNotDismissed_goesToLockscreen() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
@@ -128,11 +135,13 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat((actions?.get(Back) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
        }

    @Test
    fun upTransitionSceneKey_authMethodSwipe_lockscreenDismissed_goesToGone() =
    fun upOrBackTransitionSceneKey_authMethodSwipe_lockscreenDismissed_goesToGone() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
@@ -142,25 +151,29 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat((actions?.get(Back) as? UserActionResult.ChangeScene)?.toScene)
                .isEqualTo(SceneFamilies.Home)
            assertThat(homeScene).isEqualTo(Scenes.Gone)
        }

    @Test
    fun upTransitionKey_splitShadeEnabled_isGoneToSplitShade() =
    fun upOrBackTransitionKey_splitShadeEnabled_isGoneToSplitShade() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            enableSplitShade()

            assertThat(actions?.get(Swipe.Up)?.transitionKey).isEqualTo(ToSplitShade)
            assertThat(actions?.get(Back)?.transitionKey).isEqualTo(ToSplitShade)
        }

    @Test
    fun upTransitionKey_splitShadeDisable_isNull() =
    fun upOrBackTransitionKey_splitShadeDisable_isNull() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            enableSingleShade()

            assertThat(actions?.get(Swipe.Up)?.transitionKey).isNull()
            assertThat(actions?.get(Back)?.transitionKey).isNull()
        }

    @Test
@@ -184,7 +197,7 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {
        }

    @Test
    fun upTransitionSceneKey_customizing_noTransition() =
    fun upOrBackTransitionSceneKey_customizing_noTransition() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)

@@ -195,10 +208,11 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {
                    }
                )
                .isEmpty()
            assertThat(actions!!.keys.filterIsInstance<Back>()).isEmpty()
        }

    @Test
    fun upTransitionSceneKey_backToCommunal() =
    fun upOrBackTransitionSceneKey_backToCommunal() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val currentScene by collectLastValue(sceneInteractor.currentScene)
@@ -209,10 +223,11 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {
            assertThat(currentScene).isEqualTo(Scenes.Shade)

            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Communal))
            assertThat(actions?.get(Back)).isEqualTo(UserActionResult(Scenes.Communal))
        }

    @Test
    fun upTransitionSceneKey_neverGoesBackToShadeScene() =
    fun upOrBackTransitionSceneKey_neverGoesBackToShadeScene() =
        kosmos.runTest {
            val actions by collectValues(underTest.actions)
            val currentScene by collectLastValue(sceneInteractor.currentScene)
@@ -229,6 +244,12 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() {
                    )
                    .that((map[Swipe.Up] as? UserActionResult.ChangeScene)?.toScene)
                    .isNotEqualTo(Scenes.Shade)

                assertWithMessage(
                        "Actions on index $index is incorrectly mapping back to the Shade scene!"
                    )
                    .that((map[Back] as? UserActionResult.ChangeScene)?.toScene)
                    .isNotEqualTo(Scenes.Shade)
            }
        }

+4 −8
Original line number Diff line number Diff line
@@ -57,14 +57,10 @@ constructor(
            ) { shadeMode, isCustomizerShowing, backScene ->
                buildMap<UserAction, UserActionResult> {
                    if (!isCustomizerShowing) {
                        set(
                            Swipe.Up,
                            UserActionResult(
                                backScene,
                                ToSplitShade.takeIf { shadeMode is ShadeMode.Split },
                            ),
                        )
                        set(Back, UserActionResult(backScene))
                        val backSceneTransitionKey =
                            ToSplitShade.takeIf { shadeMode is ShadeMode.Split }
                        set(Swipe.Up, UserActionResult(backScene, backSceneTransitionKey))
                        set(Back, UserActionResult(backScene, backSceneTransitionKey))
                    }

                    // TODO(b/330200163) Add an else to be able to collapse the shade while