diff options
| -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( |