diff options
| author | 2024-11-01 13:42:17 -0400 | |
|---|---|---|
| committer | 2024-11-01 14:04:16 -0400 | |
| commit | 154d5562c9b4837e56e7b24fa7e2774d58ffacf3 (patch) | |
| tree | 4f22654fa82aa14ba18f8a38ce43d52a106e65e8 | |
| parent | 067c153ffeb3ad38d2341d15a15953b390a2fa89 (diff) | |
Fix test when home controls hsum flag enabled
The HomeControlsDreamStartableTest currently fails when the home
controls hsum flag is enabled. This change parameterizes the test to
ensure we have coverage with both the flag on and off. It also makes
some other cleanup updates to the test.
Flag: EXEMPT test fix
Bug: 370691405
Test: atest HomeControlsDreamStartableTest
Change-Id: Ied928df0451f2fac0131e050b5fff668c93fee87
| -rw-r--r-- | packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt | 134 |
1 files changed, 77 insertions, 57 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt index ed45e8cff1f4..ef02817eb4ac 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt @@ -23,88 +23,86 @@ import android.content.pm.ServiceInfo import android.content.pm.UserInfo import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags +import android.platform.test.flag.junit.FlagsParameterization import android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM -import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest +import com.android.systemui.Flags.FLAG_HOME_CONTROLS_DREAM_HSUM +import com.android.systemui.Flags.homeControlsDreamHsum import com.android.systemui.SysuiTestCase import com.android.systemui.controls.ControlsServiceInfo -import com.android.systemui.controls.dagger.ControlsComponent -import com.android.systemui.controls.management.ControlsListingController -import com.android.systemui.controls.panels.AuthorizedPanelsRepository import com.android.systemui.controls.panels.SelectedComponentRepository import com.android.systemui.controls.panels.authorizedPanelsRepository import com.android.systemui.controls.panels.selectedComponentRepository import com.android.systemui.dreams.homecontrols.system.HomeControlsDreamStartable -import com.android.systemui.dreams.homecontrols.system.domain.interactor.HomeControlsComponentInteractor import com.android.systemui.dreams.homecontrols.system.domain.interactor.controlsComponent import com.android.systemui.dreams.homecontrols.system.domain.interactor.controlsListingController import com.android.systemui.dreams.homecontrols.system.domain.interactor.homeControlsComponentInteractor import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.testScope +import com.android.systemui.settings.fakeUserTracker import com.android.systemui.settings.userTracker import com.android.systemui.testKosmos -import com.android.systemui.user.data.repository.FakeUserRepository import com.android.systemui.user.data.repository.fakeUserRepository -import com.android.systemui.util.mockito.eq -import com.android.systemui.util.mockito.whenever import java.util.Optional +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mock import org.mockito.Mockito.verify -import org.mockito.MockitoAnnotations - +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock +import org.mockito.kotlin.stub +import org.mockito.kotlin.whenever +import platform.test.runner.parameterized.ParameterizedAndroidJunit4 +import platform.test.runner.parameterized.Parameters + +@OptIn(ExperimentalCoroutinesApi::class) @SmallTest -@RunWith(AndroidJUnit4::class) -class HomeControlsDreamStartableTest : SysuiTestCase() { +@RunWith(ParameterizedAndroidJunit4::class) +class HomeControlsDreamStartableTest(flags: FlagsParameterization) : SysuiTestCase() { + init { + mSetFlagsRule.setFlagsParameterization(flags) + } private val kosmos = testKosmos() + private val testScope = kosmos.testScope - @Mock private lateinit var packageManager: PackageManager + private val systemUserPackageManager = mock<PackageManager>() + private val userPackageManager = mock<PackageManager>() - private lateinit var homeControlsComponentInteractor: HomeControlsComponentInteractor - private lateinit var selectedComponentRepository: SelectedComponentRepository - private lateinit var authorizedPanelsRepository: AuthorizedPanelsRepository - private lateinit var userRepository: FakeUserRepository - private lateinit var controlsComponent: ControlsComponent - private lateinit var controlsListingController: ControlsListingController + private val selectedComponentRepository = kosmos.selectedComponentRepository + private val userRepository = + kosmos.fakeUserRepository.apply { setUserInfos(listOf(PRIMARY_USER)) } + private val controlsListingController = + kosmos.controlsListingController.stub { + on { getCurrentServices() } doReturn + listOf(buildControlsServiceInfo(TEST_COMPONENT_PANEL, "panel", hasPanel = true)) + } + private val controlsComponent = + kosmos.controlsComponent.stub { + on { getControlsListingController() } doReturn Optional.of(controlsListingController) + } - private lateinit var startable: HomeControlsDreamStartable + private val underTest by lazy { + HomeControlsDreamStartable( + mContext, + systemUserPackageManager, + kosmos.userTracker, + kosmos.homeControlsComponentInteractor, + kosmos.applicationCoroutineScope, + ) + } private val componentName = ComponentName(context, HomeControlsDreamService::class.java) - private val testScope = kosmos.testScope @Before fun setUp() { - MockitoAnnotations.initMocks(this) - - selectedComponentRepository = kosmos.selectedComponentRepository - authorizedPanelsRepository = kosmos.authorizedPanelsRepository - userRepository = kosmos.fakeUserRepository - controlsComponent = kosmos.controlsComponent - controlsListingController = kosmos.controlsListingController - - userRepository.setUserInfos(listOf(PRIMARY_USER)) - - authorizedPanelsRepository.addAuthorizedPanels(setOf(TEST_PACKAGE_PANEL)) - + kosmos.authorizedPanelsRepository.addAuthorizedPanels(setOf(TEST_PACKAGE_PANEL)) whenever(controlsComponent.getControlsListingController()) .thenReturn(Optional.of(controlsListingController)) - whenever(controlsListingController.getCurrentServices()) - .thenReturn(listOf(ControlsServiceInfo(TEST_COMPONENT_PANEL, "panel", hasPanel = true))) - - homeControlsComponentInteractor = kosmos.homeControlsComponentInteractor - - startable = - HomeControlsDreamStartable( - mContext, - packageManager, - kosmos.userTracker, - homeControlsComponentInteractor, - kosmos.applicationCoroutineScope, - ) + whenever(kosmos.fakeUserTracker.userContext.packageManager).thenReturn(userPackageManager) } @Test @@ -113,13 +111,19 @@ class HomeControlsDreamStartableTest : SysuiTestCase() { testScope.runTest { userRepository.setSelectedUserInfo(PRIMARY_USER) selectedComponentRepository.setSelectedComponent(TEST_SELECTED_COMPONENT_PANEL) - startable.start() + underTest.start() runCurrent() + val packageManager = + if (homeControlsDreamHsum()) { + userPackageManager + } else { + systemUserPackageManager + } verify(packageManager) .setComponentEnabledSetting( - eq(componentName), - eq(PackageManager.COMPONENT_ENABLED_STATE_ENABLED), - eq(PackageManager.DONT_KILL_APP), + componentName, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP, ) } @@ -128,13 +132,19 @@ class HomeControlsDreamStartableTest : SysuiTestCase() { fun testStartDisablesHomeControlsDreamServiceWhenPanelComponentIsNull() = testScope.runTest { selectedComponentRepository.setSelectedComponent(TEST_SELECTED_COMPONENT_NON_PANEL) - startable.start() + underTest.start() runCurrent() + val packageManager = + if (homeControlsDreamHsum()) { + userPackageManager + } else { + systemUserPackageManager + } verify(packageManager) .setComponentEnabledSetting( - eq(componentName), - eq(PackageManager.COMPONENT_ENABLED_STATE_DISABLED), - eq(PackageManager.DONT_KILL_APP), + componentName, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP, ) } @@ -143,8 +153,14 @@ class HomeControlsDreamStartableTest : SysuiTestCase() { fun testStartDisablesDreamServiceWhenFlagIsDisabled() = testScope.runTest { selectedComponentRepository.setSelectedComponent(TEST_SELECTED_COMPONENT_NON_PANEL) - startable.start() + underTest.start() runCurrent() + val packageManager = + if (homeControlsDreamHsum()) { + userPackageManager + } else { + systemUserPackageManager + } verify(packageManager) .setComponentEnabledSetting( eq(componentName), @@ -153,7 +169,7 @@ class HomeControlsDreamStartableTest : SysuiTestCase() { ) } - private fun ControlsServiceInfo( + private fun buildControlsServiceInfo( componentName: ComponentName, label: CharSequence, hasPanel: Boolean, @@ -186,6 +202,10 @@ class HomeControlsDreamStartableTest : SysuiTestCase() { } companion object { + @get:Parameters(name = "{0}") + @JvmStatic + val params = FlagsParameterization.allCombinationsOf(FLAG_HOME_CONTROLS_DREAM_HSUM) + private const val PRIMARY_USER_ID = 0 private val PRIMARY_USER = UserInfo( |