From ff69d4bf4cbd2059c61ece8344eea4393f3ca2b9 Mon Sep 17 00:00:00 2001 From: kwaky Date: Fri, 31 Jul 2020 16:25:17 -0700 Subject: 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 --- .../UserSwitchTransitionViewMediator.java | 7 ++++-- .../UserSwitchTransitionViewMediatorTest.java | 27 ++++++++++++++++++---- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediator.java b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediator.java index aea691443290..7db2823dc3b9 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediator.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediator.java @@ -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()); } diff --git a/packages/CarSystemUI/tests/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediatorTest.java b/packages/CarSystemUI/tests/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediatorTest.java index de6feb64391f..7aeffce7042d 100644 --- a/packages/CarSystemUI/tests/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediatorTest.java +++ b/packages/CarSystemUI/tests/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewMediatorTest.java @@ -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( -- cgit v1.2.3-59-g8ed1b