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

Commit ff69d4bf authored by kwaky's avatar kwaky
Browse files

Fix UserSwitchTransitionViewMediatorTest

First, it has to extend SystemUiTestCase to pass AAAPlusPlusVerify Test.
Second, CarDeviceProvisionedController is injected into the Mediator and
mocked in its test to correctly test case where the user life cycle
event is being applied to the current user and a case when it is not.

Bug: 161892451
Test: Unit Test (the corresponding tests passing now.)
Change-Id: I8be7dacaa1bf0abb87dcb357c37e58ce511132d2
parent 66909a0d
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -16,12 +16,12 @@

package com.android.systemui.car.userswitcher;

import android.app.ActivityManager;
import android.car.Car;
import android.car.user.CarUserManager;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.car.CarDeviceProvisionedController;
import com.android.systemui.car.CarServiceProvider;
import com.android.systemui.car.window.OverlayViewMediator;

@@ -36,13 +36,16 @@ public class UserSwitchTransitionViewMediator implements OverlayViewMediator,
    private static final String TAG = "UserSwitchTransitionViewMediator";

    private final CarServiceProvider mCarServiceProvider;
    private final CarDeviceProvisionedController mCarDeviceProvisionedController;
    private final UserSwitchTransitionViewController mUserSwitchTransitionViewController;

    @Inject
    public UserSwitchTransitionViewMediator(
            CarServiceProvider carServiceProvider,
            CarDeviceProvisionedController carDeviceProvisionedController,
            UserSwitchTransitionViewController userSwitchTransitionViewController) {
        mCarServiceProvider = carServiceProvider;
        mCarDeviceProvisionedController = carDeviceProvisionedController;
        mUserSwitchTransitionViewController = userSwitchTransitionViewController;
    }

@@ -74,7 +77,7 @@ public class UserSwitchTransitionViewMediator implements OverlayViewMediator,
    @VisibleForTesting
    void handleUserLifecycleEvent(CarUserManager.UserLifecycleEvent event) {
        if (event.getEventType() == CarUserManager.USER_LIFECYCLE_EVENT_TYPE_STARTING
                && ActivityManager.getCurrentUser() == event.getUserId()) {
                && mCarDeviceProvisionedController.getCurrentUser() == event.getUserId()) {
            mUserSwitchTransitionViewController.handleShow(event.getUserId());
        }

+23 −4
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.car.userswitcher;

import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -24,6 +25,8 @@ import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;

import com.android.systemui.SysuiTestCase;
import com.android.systemui.car.CarDeviceProvisionedController;
import com.android.systemui.car.CarServiceProvider;
import com.android.systemui.car.CarSystemUiTest;

@@ -37,13 +40,15 @@ import org.mockito.MockitoAnnotations;
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
@SmallTest
public class UserSwitchTransitionViewMediatorTest {
public class UserSwitchTransitionViewMediatorTest extends SysuiTestCase {
    private static final int TEST_USER = 100;

    private UserSwitchTransitionViewMediator mUserSwitchTransitionViewMediator;
    @Mock
    private CarServiceProvider mCarServiceProvider;
    @Mock
    private CarDeviceProvisionedController mCarDeviceProvisionedController;
    @Mock
    private UserSwitchTransitionViewController mUserSwitchTransitionViewController;
    @Mock
    private CarUserManager.UserLifecycleEvent mUserLifecycleEvent;
@@ -53,20 +58,34 @@ public class UserSwitchTransitionViewMediatorTest {
        MockitoAnnotations.initMocks(this);

        mUserSwitchTransitionViewMediator = new UserSwitchTransitionViewMediator(
                mCarServiceProvider, mUserSwitchTransitionViewController);

                mCarServiceProvider, mCarDeviceProvisionedController,
                mUserSwitchTransitionViewController);
        when(mCarDeviceProvisionedController.getCurrentUser()).thenReturn(TEST_USER);
    }

    @Test
    public void onUserLifecycleEvent_userStarting_callsHandleShow() {
    public void onUserLifecycleEvent_userStarting_isCurrentUser_callsHandleShow() {
        when(mUserLifecycleEvent.getEventType()).thenReturn(
                CarUserManager.USER_LIFECYCLE_EVENT_TYPE_STARTING);
        when(mUserLifecycleEvent.getUserId()).thenReturn(TEST_USER);

        mUserSwitchTransitionViewMediator.handleUserLifecycleEvent(mUserLifecycleEvent);

        verify(mUserSwitchTransitionViewController).handleShow(TEST_USER);
    }

    @Test
    public void onUserLifecycleEvent_userStarting_isNotCurrentUser_doesNotCallHandleShow() {
        when(mUserLifecycleEvent.getEventType()).thenReturn(
                CarUserManager.USER_LIFECYCLE_EVENT_TYPE_STARTING);
        when(mUserLifecycleEvent.getUserId()).thenReturn(TEST_USER);
        when(mCarDeviceProvisionedController.getCurrentUser()).thenReturn(TEST_USER + 1);

        mUserSwitchTransitionViewMediator.handleUserLifecycleEvent(mUserLifecycleEvent);

        verify(mUserSwitchTransitionViewController, never()).handleShow(TEST_USER);
    }

    @Test
    public void onUserLifecycleEvent_userSwitching_callsHandleHide() {
        when(mUserLifecycleEvent.getEventType()).thenReturn(