summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lucas Silva <lusilva@google.com> 2024-11-01 13:42:17 -0400
committer Lucas Silva <lusilva@google.com> 2024-11-01 14:04:16 -0400
commit154d5562c9b4837e56e7b24fa7e2774d58ffacf3 (patch)
tree4f22654fa82aa14ba18f8a38ce43d52a106e65e8
parent067c153ffeb3ad38d2341d15a15953b390a2fa89 (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.kt134
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(