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

Commit c5a84d76 authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

[Flexiglass] SceneTestUtils uses Kosmos internally.

The next step is to modify all users of SceneTestUtils to use Kosmos
directly and remove SceneTestUtils.

Bug: 309503089
Test: N/A
Flag: N/A
Change-Id: I9401c75b28981913988ceae568da88a5a88be8b6
parent 2ad9a8cf
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -230,11 +230,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
        sceneTransitionStateFlow =
            MutableStateFlow(ObservableTransitionState.Idle(SceneKey.Lockscreen))
        sceneInteractor.setTransitionState(sceneTransitionStateFlow)
        deviceEntryInteractor =
            sceneTestUtils.deviceEntryInteractor(
                authenticationInteractor = sceneTestUtils.authenticationInteractor(),
                sceneInteractor = sceneInteractor,
            )
        deviceEntryInteractor = sceneTestUtils.deviceEntryInteractor()

        mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
        underTest =
@@ -253,7 +249,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                falsingManager,
                userSwitcherController,
                featureFlags,
                sceneTestUtils.sceneContainerFlags,
                sceneTestUtils.fakeSceneContainerFlags,
                globalSettings,
                sessionTracker,
                Optional.of(sideFpsController),
@@ -791,6 +787,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
    @Test
    fun dismissesKeyguard_whenSceneChangesToGone() =
        sceneTestUtils.testScope.runTest {
            sceneTestUtils.fakeSceneContainerFlags.enabled = true
            // Upon init, we have never dismisses the keyguard.
            underTest.onInit()
            runCurrent()
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ class AuthenticationRepositoryTest : SysuiTestCase() {
            AuthenticationRepositoryImpl(
                applicationScope = testScope.backgroundScope,
                backgroundDispatcher = testUtils.testDispatcher,
                flags = testUtils.sceneContainerFlags,
                flags = testUtils.fakeSceneContainerFlags,
                clock = clock,
                getSecurityMode = getSecurityMode,
                userRepository = userRepository,
+26 −41
Original line number Diff line number Diff line
@@ -16,27 +16,25 @@

package com.android.systemui.bouncer.domain.interactor

import android.app.ActivityTaskManager
import android.telecom.TelecomManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.app.activityTaskManager
import com.android.internal.R
import com.android.internal.logging.fakeMetricsLogger
import com.android.internal.logging.nano.MetricsProto
import com.android.internal.logging.testing.FakeMetricsLogger
import com.android.internal.util.EmergencyAffordanceManager
import com.android.internal.util.emergencyAffordanceManager
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.Flags.REFACTOR_GETCURRENTUSER
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.scene.SceneTestUtils
import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.mockito.whenever
import com.android.telecom.telecomManager
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -53,27 +51,26 @@ import org.mockito.MockitoAnnotations
@RunWith(AndroidJUnit4::class)
class BouncerActionButtonInteractorTest : SysuiTestCase() {

    @Mock private lateinit var activityTaskManager: ActivityTaskManager
    @Mock private lateinit var emergencyAffordanceManager: EmergencyAffordanceManager
    @Mock private lateinit var selectedUserInteractor: SelectedUserInteractor
    @Mock private lateinit var tableLogger: TableLogBuffer
    @Mock private lateinit var telecomManager: TelecomManager

    private lateinit var utils: SceneTestUtils
    private lateinit var testScope: TestScope
    private val utils = SceneTestUtils(this)
    private val testScope = utils.testScope
    private val metricsLogger = utils.kosmos.fakeMetricsLogger
    private val activityTaskManager = utils.kosmos.activityTaskManager
    private val emergencyAffordanceManager = utils.kosmos.emergencyAffordanceManager

    private lateinit var mobileConnectionsRepository: FakeMobileConnectionsRepository

    private val metricsLogger = FakeMetricsLogger()
    private var currentUserId: Int = 0
    private var needsEmergencyAffordance = true

    private lateinit var underTest: BouncerActionButtonInteractor

    @Before
    fun setUp() {
        utils = SceneTestUtils(this)
        testScope = utils.testScope
        MockitoAnnotations.initMocks(this)
        utils.fakeSceneContainerFlags.enabled = true

        mobileConnectionsRepository = utils.mobileConnectionsRepository

        overrideResource(R.string.lockscreen_emergency_call, MESSAGE_EMERGENCY_CALL)
        overrideResource(R.string.lockscreen_return_to_call, MESSAGE_RETURN_TO_CALL)
@@ -86,34 +83,18 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
            .thenReturn(needsEmergencyAffordance)
        whenever(telecomManager.isInCall).thenReturn(false)

        utils.featureFlags.set(REFACTOR_GETCURRENTUSER, true)

        mobileConnectionsRepository =
            FakeMobileConnectionsRepository(FakeMobileMappingsProxy(), tableLogger)
        utils.fakeFeatureFlags.set(REFACTOR_GETCURRENTUSER, true)

        utils.telephonyRepository.setHasTelephonyRadio(true)

        underTest =
            utils.bouncerActionButtonInteractor(
                mobileConnectionsRepository = mobileConnectionsRepository,
                activityTaskManager = activityTaskManager,
                telecomManager = telecomManager,
                emergencyAffordanceManager = emergencyAffordanceManager,
                metricsLogger = metricsLogger,
            )
        utils.kosmos.telecomManager = telecomManager
    }

    @Test
    fun noTelephonyRadio_noButton() =
        testScope.runTest {
            utils.telephonyRepository.setHasTelephonyRadio(false)
            underTest =
                utils.bouncerActionButtonInteractor(
                    mobileConnectionsRepository = mobileConnectionsRepository,
                    activityTaskManager = activityTaskManager,
                    telecomManager = telecomManager,
                )

            val underTest = utils.bouncerActionButtonInteractor()
            val actionButton by collectLastValue(underTest.actionButton)
            assertThat(actionButton).isNull()
        }
@@ -121,12 +102,8 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
    @Test
    fun noTelecomManager_noButton() =
        testScope.runTest {
            underTest =
                utils.bouncerActionButtonInteractor(
                    mobileConnectionsRepository = mobileConnectionsRepository,
                    activityTaskManager = activityTaskManager,
                    telecomManager = null,
                )
            utils.kosmos.telecomManager = null
            val underTest = utils.bouncerActionButtonInteractor()
            val actionButton by collectLastValue(underTest.actionButton)
            assertThat(actionButton).isNull()
        }
@@ -134,6 +111,7 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
    @Test
    fun duringCall_returnToCallButton() =
        testScope.runTest {
            val underTest = utils.bouncerActionButtonInteractor()
            val actionButton by collectLastValue(underTest.actionButton)
            utils.telephonyRepository.setIsInCall(true)

@@ -143,6 +121,7 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
            assertThat(actionButton?.onLongClick).isNull()

            actionButton?.onClick?.invoke()
            runCurrent()

            assertThat(metricsLogger.logs.size).isEqualTo(1)
            assertThat(metricsLogger.logs.element().category)
@@ -154,6 +133,7 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
    @Test
    fun noCall_secureAuthMethod_emergencyCallButton() =
        testScope.runTest {
            val underTest = utils.bouncerActionButtonInteractor()
            val actionButton by collectLastValue(underTest.actionButton)
            mobileConnectionsRepository.isAnySimSecure.value = false
            utils.authenticationRepository.setAuthenticationMethod(AuthenticationMethodModel.Pin)
@@ -165,6 +145,7 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
            assertThat(actionButton?.onLongClick).isNotNull()

            actionButton?.onClick?.invoke()
            runCurrent()

            assertThat(metricsLogger.logs.size).isEqualTo(1)
            assertThat(metricsLogger.logs.element().category)
@@ -182,10 +163,12 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
    @Test
    fun noCall_insecureAuthMethodButSecureSim_emergencyCallButton() =
        testScope.runTest {
            val underTest = utils.bouncerActionButtonInteractor()
            val actionButton by collectLastValue(underTest.actionButton)
            mobileConnectionsRepository.isAnySimSecure.value = true
            utils.authenticationRepository.setAuthenticationMethod(AuthenticationMethodModel.None)
            utils.telephonyRepository.setIsInCall(false)
            runCurrent()

            assertThat(actionButton).isNotNull()
            assertThat(actionButton?.label).isEqualTo(MESSAGE_EMERGENCY_CALL)
@@ -196,6 +179,7 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
    @Test
    fun noCall_insecure_noButton() =
        testScope.runTest {
            val underTest = utils.bouncerActionButtonInteractor()
            val actionButton by collectLastValue(underTest.actionButton)
            mobileConnectionsRepository.isAnySimSecure.value = false
            utils.authenticationRepository.setAuthenticationMethod(AuthenticationMethodModel.None)
@@ -207,6 +191,7 @@ class BouncerActionButtonInteractorTest : SysuiTestCase() {
    @Test
    fun noCall_simSecureButEmergencyNotSupported_noButton() =
        testScope.runTest {
            val underTest = utils.bouncerActionButtonInteractor()
            val actionButton by collectLastValue(underTest.actionButton)
            mobileConnectionsRepository.isAnySimSecure.value = true
            overrideResource(R.bool.config_enable_emergency_call_while_sim_locked, false)
+14 −12
Original line number Diff line number Diff line
@@ -25,7 +25,8 @@ import com.android.systemui.authentication.shared.model.AuthenticationMethodMode
import com.android.systemui.authentication.shared.model.AuthenticationPatternCoordinate
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryFaceAuthInteractor
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFaceAuthRepository
import com.android.systemui.res.R
import com.android.systemui.scene.SceneTestUtils
import com.google.common.truth.Truth.assertThat
@@ -37,8 +38,6 @@ 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

@OptIn(ExperimentalCoroutinesApi::class)
@@ -46,9 +45,7 @@ import org.mockito.MockitoAnnotations
@RunWith(AndroidJUnit4::class)
class BouncerInteractorTest : SysuiTestCase() {

    @Mock private lateinit var mDeviceEntryFaceAuthInteractor: DeviceEntryFaceAuthInteractor

    private val utils = SceneTestUtils(this)
    private val utils = SceneTestUtils(this).apply { fakeSceneContainerFlags.enabled = true }
    private val testScope = utils.testScope
    private val authenticationInteractor = utils.authenticationInteractor()

@@ -57,6 +54,7 @@ class BouncerInteractorTest : SysuiTestCase() {
    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)

        overrideResource(R.string.keyguard_enter_your_pin, MESSAGE_ENTER_YOUR_PIN)
        overrideResource(R.string.keyguard_enter_your_password, MESSAGE_ENTER_YOUR_PASSWORD)
        overrideResource(R.string.keyguard_enter_your_pattern, MESSAGE_ENTER_YOUR_PATTERN)
@@ -64,11 +62,7 @@ class BouncerInteractorTest : SysuiTestCase() {
        overrideResource(R.string.kg_wrong_password, MESSAGE_WRONG_PASSWORD)
        overrideResource(R.string.kg_wrong_pattern, MESSAGE_WRONG_PATTERN)

        underTest =
            utils.bouncerInteractor(
                authenticationInteractor = authenticationInteractor,
                deviceEntryFaceAuthInteractor = mDeviceEntryFaceAuthInteractor,
            )
        underTest = utils.bouncerInteractor()
    }

    @Test
@@ -305,8 +299,16 @@ class BouncerInteractorTest : SysuiTestCase() {
    @Test
    fun intentionalUserInputEvent_notifiesFaceAuthInteractor() =
        testScope.runTest {
            val isFaceAuthRunning by
                collectLastValue(utils.kosmos.fakeDeviceEntryFaceAuthRepository.isAuthRunning)
            utils.kosmos.deviceEntryFaceAuthInteractor.onDeviceLifted()
            runCurrent()
            assertThat(isFaceAuthRunning).isTrue()

            underTest.onIntentionalUserInput()
            verify(mDeviceEntryFaceAuthInteractor).onPrimaryBouncerUserInput()
            runCurrent()

            assertThat(isFaceAuthRunning).isFalse()
        }

    companion object {
+1 −4
Original line number Diff line number Diff line
@@ -35,10 +35,7 @@ class AuthMethodBouncerViewModelTest : SysuiTestCase() {

    private val utils = SceneTestUtils(this)
    private val testScope = utils.testScope
    private val bouncerInteractor =
        utils.bouncerInteractor(
            authenticationInteractor = utils.authenticationInteractor(),
        )
    private val bouncerInteractor = utils.bouncerInteractor()
    private val underTest =
        PinBouncerViewModel(
            applicationContext = context,
Loading