Loading packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/InfiniteGridLayoutEditTileGridTest.kt +25 −6 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.compose.modifiers.resIdToTestTag import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.haptics.msdl.tileHapticsViewModelFactoryProvider import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest Loading @@ -53,9 +54,13 @@ import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragmen import com.android.systemui.qs.flags.QsEditModeTabs import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.domain.interactor.iconTilesInteractor import com.android.systemui.qs.panels.ui.compose.infinitegrid.infiniteGridLayout import com.android.systemui.qs.panels.ui.viewmodel.dynamicIconTilesViewModel import com.android.systemui.qs.panels.ui.compose.infinitegrid.InfiniteGridLayout import com.android.systemui.qs.panels.ui.viewmodel.detailsViewModel import com.android.systemui.qs.panels.ui.viewmodel.InfiniteGridViewModel import com.android.systemui.qs.panels.ui.viewmodel.editModeViewModel import com.android.systemui.qs.panels.ui.viewmodel.iconTilesViewModel import com.android.systemui.qs.panels.ui.viewmodel.infiniteGridViewModelFactory import com.android.systemui.qs.panels.ui.viewmodel.textFeedbackContentViewModelFactory import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.testKosmos Loading @@ -79,7 +84,23 @@ class InfiniteGridLayoutEditTileGridTest(flags: FlagsParameterization) : SysuiTe private val kosmos = testKosmos().useUnconfinedTestDispatcher() private val Kosmos.underTest by Kosmos.Fixture { infiniteGridLayout } private val Kosmos.viewModelUnderTest by Kosmos.Fixture { infiniteGridViewModelFactory.create() } private val Kosmos.underTest by Kosmos.Fixture { InfiniteGridLayout( detailsViewModel, iconTilesViewModel, viewModelFactory = object : InfiniteGridViewModel.Factory { override fun create(): InfiniteGridViewModel { return viewModelUnderTest } }, textFeedbackContentViewModelFactory, tileHapticsViewModelFactoryProvider, ) } @Before fun setUp() { Loading Loading @@ -303,8 +324,6 @@ class InfiniteGridLayoutEditTileGridTest(flags: FlagsParameterization) : SysuiTe // Perform second undo composeRule.onNodeWithContentDescription("Undo").performClick() assertLargeTiles(setOf("internet", "bt", "dnd", "cast")) assertThat(dynamicIconTilesViewModel.largeTilesState.value.map { it.spec }) .containsExactly("internet", "bt", "dnd", "cast") } @Test Loading Loading @@ -372,7 +391,7 @@ class InfiniteGridLayoutEditTileGridTest(flags: FlagsParameterization) : SysuiTe private fun assertLargeTiles(largeSpecs: Set<String>) = kosmos.run { assertThat(dynamicIconTilesViewModel.largeTilesState.value.map { it.spec }) assertThat(viewModelUnderTest.iconTilesViewModel.largeTilesState.value.map { it.spec }) .containsExactlyElementsIn(largeSpecs) } Loading packages/SystemUI/tests/src/com/android/systemui/qs/ui/composable/QuickSettingsSceneTest.kt +28 −12 Original line number Diff line number Diff line Loading @@ -30,7 +30,11 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.compose.modifiers.resIdToTestTag import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.jank.interactionJankMonitor import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.testScope import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.ui.viewmodel.quickSettingsSceneContentViewModelFactory import com.android.systemui.qs.ui.viewmodel.quickSettingsUserActionsViewModelFactory import com.android.systemui.scene.session.shared.SessionStorage Loading @@ -42,7 +46,8 @@ import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScr import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModelFactory import com.android.systemui.statusbar.phone.ui.tintedIconManagerFactory import com.android.systemui.testKosmos import org.junit.Ignore import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith Loading @@ -53,13 +58,14 @@ import org.mockito.Mockito.mock @TestableLooper.RunWithLooper @EnableSceneContainer class QuickSettingsSceneTest : SysuiTestCase() { @get:Rule val composeTestRule = createComposeRule() @get:Rule val composeTestRule = createComposeRule() private val kosmos = testKosmos() @OptIn(ExperimentalCoroutinesApi::class) @Test @Ignore("http://b/425752706") fun testViewHierarchy() { fun testViewHierarchy() = kosmos.runTest { val shadeSession = object : SaveableSession, Session by Session(SessionStorage()) { @Composable Loading @@ -71,22 +77,31 @@ class QuickSettingsSceneTest : SysuiTestCase() { ): T = rememberSession(key, inputs = inputs, init = init) } kosmos.usingMediaInComposeFragment = true usingMediaInComposeFragment = true currentTilesInteractor.setTiles( listOf( TileSpec.create("internet"), TileSpec.create("bt"), ) ) testScope.runCurrent() val scene = QuickSettingsScene( shadeSession = shadeSession, notificationStackScrollView = { mock(NotificationScrollView::class.java) }, notificationsPlaceholderViewModelFactory = kosmos.notificationsPlaceholderViewModelFactory, actionsViewModelFactory = kosmos.quickSettingsUserActionsViewModelFactory, contentViewModelFactory = kosmos.quickSettingsSceneContentViewModelFactory, jankMonitor = kosmos.interactionJankMonitor, notificationsPlaceholderViewModelFactory, actionsViewModelFactory = quickSettingsUserActionsViewModelFactory, contentViewModelFactory = quickSettingsSceneContentViewModelFactory, jankMonitor = interactionJankMonitor, ) composeTestRule.setContent { PlatformTheme { WithStatusIconContext(kosmos.tintedIconManagerFactory) { WithStatusIconContext(tintedIconManagerFactory) { with(scene) { TestContentScope(currentScene = Scenes.QuickSettings) { Content(Modifier) } } Loading @@ -99,7 +114,8 @@ class QuickSettingsSceneTest : SysuiTestCase() { // Verify that the brightness slider exists. composeTestRule.onNodeWithTag(resIdToTestTag("brightness_slider")).assertExists() // Verify that the tile grid exists. composeTestRule.onNodeWithTag(resIdToTestTag("quick_settings_panel")).assertExists() // Verify that the tiles exist. composeTestRule.onNodeWithTag("element:internet").assertExists() composeTestRule.onNodeWithTag("element:bt").assertExists() } } packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/DynamicIconTilesViewModelKosmosFactory.kt +5 −10 Original line number Diff line number Diff line Loading @@ -19,16 +19,11 @@ package com.android.systemui.qs.panels.ui.viewmodel import com.android.systemui.kosmos.Kosmos import com.android.systemui.qs.panels.domain.interactor.dynamicIconTilesInteractorFactory val Kosmos.dynamicIconTilesViewModel by Kosmos.Fixture { DynamicIconTilesViewModel(dynamicIconTilesInteractorFactory, iconTilesViewModel) } val Kosmos.dynamicIconTilesViewModelFactory by Kosmos.Fixture { object : DynamicIconTilesViewModel.Factory { override fun create(): DynamicIconTilesViewModel { return dynamicIconTilesViewModel return DynamicIconTilesViewModel(dynamicIconTilesInteractorFactory, iconTilesViewModel) } } } Loading
packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/InfiniteGridLayoutEditTileGridTest.kt +25 −6 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.compose.modifiers.resIdToTestTag import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.haptics.msdl.tileHapticsViewModelFactoryProvider import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest Loading @@ -53,9 +54,13 @@ import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragmen import com.android.systemui.qs.flags.QsEditModeTabs import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.domain.interactor.iconTilesInteractor import com.android.systemui.qs.panels.ui.compose.infinitegrid.infiniteGridLayout import com.android.systemui.qs.panels.ui.viewmodel.dynamicIconTilesViewModel import com.android.systemui.qs.panels.ui.compose.infinitegrid.InfiniteGridLayout import com.android.systemui.qs.panels.ui.viewmodel.detailsViewModel import com.android.systemui.qs.panels.ui.viewmodel.InfiniteGridViewModel import com.android.systemui.qs.panels.ui.viewmodel.editModeViewModel import com.android.systemui.qs.panels.ui.viewmodel.iconTilesViewModel import com.android.systemui.qs.panels.ui.viewmodel.infiniteGridViewModelFactory import com.android.systemui.qs.panels.ui.viewmodel.textFeedbackContentViewModelFactory import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.testKosmos Loading @@ -79,7 +84,23 @@ class InfiniteGridLayoutEditTileGridTest(flags: FlagsParameterization) : SysuiTe private val kosmos = testKosmos().useUnconfinedTestDispatcher() private val Kosmos.underTest by Kosmos.Fixture { infiniteGridLayout } private val Kosmos.viewModelUnderTest by Kosmos.Fixture { infiniteGridViewModelFactory.create() } private val Kosmos.underTest by Kosmos.Fixture { InfiniteGridLayout( detailsViewModel, iconTilesViewModel, viewModelFactory = object : InfiniteGridViewModel.Factory { override fun create(): InfiniteGridViewModel { return viewModelUnderTest } }, textFeedbackContentViewModelFactory, tileHapticsViewModelFactoryProvider, ) } @Before fun setUp() { Loading Loading @@ -303,8 +324,6 @@ class InfiniteGridLayoutEditTileGridTest(flags: FlagsParameterization) : SysuiTe // Perform second undo composeRule.onNodeWithContentDescription("Undo").performClick() assertLargeTiles(setOf("internet", "bt", "dnd", "cast")) assertThat(dynamicIconTilesViewModel.largeTilesState.value.map { it.spec }) .containsExactly("internet", "bt", "dnd", "cast") } @Test Loading Loading @@ -372,7 +391,7 @@ class InfiniteGridLayoutEditTileGridTest(flags: FlagsParameterization) : SysuiTe private fun assertLargeTiles(largeSpecs: Set<String>) = kosmos.run { assertThat(dynamicIconTilesViewModel.largeTilesState.value.map { it.spec }) assertThat(viewModelUnderTest.iconTilesViewModel.largeTilesState.value.map { it.spec }) .containsExactlyElementsIn(largeSpecs) } Loading
packages/SystemUI/tests/src/com/android/systemui/qs/ui/composable/QuickSettingsSceneTest.kt +28 −12 Original line number Diff line number Diff line Loading @@ -30,7 +30,11 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.compose.modifiers.resIdToTestTag import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.jank.interactionJankMonitor import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.testScope import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.ui.viewmodel.quickSettingsSceneContentViewModelFactory import com.android.systemui.qs.ui.viewmodel.quickSettingsUserActionsViewModelFactory import com.android.systemui.scene.session.shared.SessionStorage Loading @@ -42,7 +46,8 @@ import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScr import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModelFactory import com.android.systemui.statusbar.phone.ui.tintedIconManagerFactory import com.android.systemui.testKosmos import org.junit.Ignore import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith Loading @@ -53,13 +58,14 @@ import org.mockito.Mockito.mock @TestableLooper.RunWithLooper @EnableSceneContainer class QuickSettingsSceneTest : SysuiTestCase() { @get:Rule val composeTestRule = createComposeRule() @get:Rule val composeTestRule = createComposeRule() private val kosmos = testKosmos() @OptIn(ExperimentalCoroutinesApi::class) @Test @Ignore("http://b/425752706") fun testViewHierarchy() { fun testViewHierarchy() = kosmos.runTest { val shadeSession = object : SaveableSession, Session by Session(SessionStorage()) { @Composable Loading @@ -71,22 +77,31 @@ class QuickSettingsSceneTest : SysuiTestCase() { ): T = rememberSession(key, inputs = inputs, init = init) } kosmos.usingMediaInComposeFragment = true usingMediaInComposeFragment = true currentTilesInteractor.setTiles( listOf( TileSpec.create("internet"), TileSpec.create("bt"), ) ) testScope.runCurrent() val scene = QuickSettingsScene( shadeSession = shadeSession, notificationStackScrollView = { mock(NotificationScrollView::class.java) }, notificationsPlaceholderViewModelFactory = kosmos.notificationsPlaceholderViewModelFactory, actionsViewModelFactory = kosmos.quickSettingsUserActionsViewModelFactory, contentViewModelFactory = kosmos.quickSettingsSceneContentViewModelFactory, jankMonitor = kosmos.interactionJankMonitor, notificationsPlaceholderViewModelFactory, actionsViewModelFactory = quickSettingsUserActionsViewModelFactory, contentViewModelFactory = quickSettingsSceneContentViewModelFactory, jankMonitor = interactionJankMonitor, ) composeTestRule.setContent { PlatformTheme { WithStatusIconContext(kosmos.tintedIconManagerFactory) { WithStatusIconContext(tintedIconManagerFactory) { with(scene) { TestContentScope(currentScene = Scenes.QuickSettings) { Content(Modifier) } } Loading @@ -99,7 +114,8 @@ class QuickSettingsSceneTest : SysuiTestCase() { // Verify that the brightness slider exists. composeTestRule.onNodeWithTag(resIdToTestTag("brightness_slider")).assertExists() // Verify that the tile grid exists. composeTestRule.onNodeWithTag(resIdToTestTag("quick_settings_panel")).assertExists() // Verify that the tiles exist. composeTestRule.onNodeWithTag("element:internet").assertExists() composeTestRule.onNodeWithTag("element:bt").assertExists() } }
packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/DynamicIconTilesViewModelKosmosFactory.kt +5 −10 Original line number Diff line number Diff line Loading @@ -19,16 +19,11 @@ package com.android.systemui.qs.panels.ui.viewmodel import com.android.systemui.kosmos.Kosmos import com.android.systemui.qs.panels.domain.interactor.dynamicIconTilesInteractorFactory val Kosmos.dynamicIconTilesViewModel by Kosmos.Fixture { DynamicIconTilesViewModel(dynamicIconTilesInteractorFactory, iconTilesViewModel) } val Kosmos.dynamicIconTilesViewModelFactory by Kosmos.Fixture { object : DynamicIconTilesViewModel.Factory { override fun create(): DynamicIconTilesViewModel { return dynamicIconTilesViewModel return DynamicIconTilesViewModel(dynamicIconTilesInteractorFactory, iconTilesViewModel) } } }