Update custom shadow usage of ShadowActivityManager

Test: atest SettingsRoboTests

Bug: 319052511
Change-Id: I15ee6a19d039808aab5089e309a872cf6bc818bc
This commit is contained in:
Fan Wu
2024-01-08 18:20:53 +08:00
parent c1c500ae67
commit 1ce7938afc
9 changed files with 79 additions and 78 deletions

View File

@@ -23,15 +23,15 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context; import android.content.Context;
import com.android.settings.testutils.shadow.ShadowActivityManager; import androidx.test.core.app.ApplicationProvider;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = { @Config(shadows = {
@@ -45,7 +45,7 @@ public class VrListenerScreenPreferenceControllerTest {
@Before @Before
public void setUp() { public void setUp() {
mContext = RuntimeEnvironment.application; mContext = ApplicationProvider.getApplicationContext();
mController = new VrListenerScreenPreferenceController(mContext, "key"); mController = new VrListenerScreenPreferenceController(mContext, "key");
mActivityManager = Shadow.extract(mContext.getSystemService(Context.ACTIVITY_SERVICE)); mActivityManager = Shadow.extract(mContext.getSystemService(Context.ACTIVITY_SERVICE));
} }

View File

@@ -25,23 +25,20 @@ import static org.mockito.Mockito.verify;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.content.Context; import android.content.Context;
import androidx.test.core.app.ApplicationProvider;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settings.testutils.shadow.ShadowNotificationManager; import com.android.settings.testutils.shadow.ShadowNotificationManager;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = {
ShadowActivityManager.class,
})
public class ZenAccessControllerTest { public class ZenAccessControllerTest {
private static final String TEST_PKG = "com.test.package"; private static final String TEST_PKG = "com.test.package";
@@ -49,15 +46,12 @@ public class ZenAccessControllerTest {
private FakeFeatureFactory mFeatureFactory; private FakeFeatureFactory mFeatureFactory;
private Context mContext; private Context mContext;
private ZenAccessController mController; private ZenAccessController mController;
private ShadowActivityManager mActivityManager;
@Before @Before
public void setUp() { public void setUp() {
mContext = RuntimeEnvironment.application; mContext = ApplicationProvider.getApplicationContext();
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new ZenAccessController(mContext, "key"); mController = new ZenAccessController(mContext, "key");
mActivityManager = Shadow.extract(mContext.getSystemService(Context.ACTIVITY_SERVICE));
} }
@Test @Test

View File

@@ -46,6 +46,7 @@ import android.os.UserHandle;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
@@ -53,7 +54,6 @@ import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry;
import com.android.settings.fuelgauge.batteryusage.BatteryEntry; import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
import com.android.settings.fuelgauge.batteryusage.ConvertUtils; import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.PrimarySwitchPreference; import com.android.settingslib.PrimarySwitchPreference;
@@ -65,15 +65,16 @@ import com.android.settingslib.widget.LayoutPreference;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers; import org.mockito.Answers;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@@ -83,10 +84,13 @@ import java.util.concurrent.TimeUnit;
@Config( @Config(
shadows = { shadows = {
ShadowEntityHeaderController.class, ShadowEntityHeaderController.class,
ShadowActivityManager.class,
com.android.settings.testutils.shadow.ShadowFragment.class, com.android.settings.testutils.shadow.ShadowFragment.class,
}) })
public class AdvancedPowerUsageDetailTest { public class AdvancedPowerUsageDetailTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String APP_LABEL = "app label"; private static final String APP_LABEL = "app label";
private static final String SUMMARY = "summary"; private static final String SUMMARY = "summary";
private static final String[] PACKAGE_NAME = {"com.android.app"}; private static final String[] PACKAGE_NAME = {"com.android.app"};
@@ -125,9 +129,7 @@ public class AdvancedPowerUsageDetailTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext());
mContext = spy(RuntimeEnvironment.application);
when(mContext.getPackageName()).thenReturn("foo"); when(mContext.getPackageName()).thenReturn("foo");
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider; mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;

View File

@@ -47,11 +47,11 @@ import android.widget.CompoundButton;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.fuelgauge.batteryusage.BatteryEntry; import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.AppUtils;
@@ -65,15 +65,16 @@ import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers; import org.mockito.Answers;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@@ -83,10 +84,13 @@ import java.util.concurrent.TimeUnit;
@Config( @Config(
shadows = { shadows = {
ShadowEntityHeaderController.class, ShadowEntityHeaderController.class,
ShadowActivityManager.class,
com.android.settings.testutils.shadow.ShadowFragment.class, com.android.settings.testutils.shadow.ShadowFragment.class,
}) })
public class PowerBackgroundUsageDetailTest { public class PowerBackgroundUsageDetailTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String APP_LABEL = "app label"; private static final String APP_LABEL = "app label";
private static final String SUMMARY = "summary"; private static final String SUMMARY = "summary";
private static final int ICON_ID = 123; private static final int ICON_ID = 123;
@@ -123,9 +127,7 @@ public class PowerBackgroundUsageDetailTest {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext());
mContext = spy(RuntimeEnvironment.application);
when(mContext.getPackageName()).thenReturn("foo"); when(mContext.getPackageName()).thenReturn("foo");
when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo); when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo);

View File

@@ -45,29 +45,30 @@ import android.view.WindowManager;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl; import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
import com.android.settings.testutils.shadow.ShadowActivityEmbeddingUtils; import com.android.settings.testutils.shadow.ShadowActivityEmbeddingUtils;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settings.testutils.shadow.ShadowPasswordUtils; import com.android.settings.testutils.shadow.ShadowPasswordUtils;
import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin; import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController; import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements; import org.robolectric.annotation.Implements;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@@ -77,11 +78,8 @@ import org.robolectric.util.ReflectionHelpers;
ShadowActivityManager.class, ShadowActivityManager.class,
}) })
public class SettingsHomepageActivityTest { public class SettingsHomepageActivityTest {
@Rule
@Before public final MockitoRule mMockitoRule = MockitoJUnit.rule();
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@After @After
public void tearDown() { public void tearDown() {
@@ -120,7 +118,8 @@ public class SettingsHomepageActivityTest {
@Config(qualifiers = "mcc999") @Config(qualifiers = "mcc999")
public void launch_LowRamDevice_shouldHideAvatar() { public void launch_LowRamDevice_shouldHideAvatar() {
final ShadowActivityManager activityManager = Shadow.extract( final ShadowActivityManager activityManager = Shadow.extract(
RuntimeEnvironment.application.getSystemService(ActivityManager.class)); ApplicationProvider.getApplicationContext().getSystemService(
ActivityManager.class));
activityManager.setIsLowRamDevice(true); activityManager.setIsLowRamDevice(true);
final SettingsHomepageActivity activity = Robolectric.buildActivity( final SettingsHomepageActivity activity = Robolectric.buildActivity(

View File

@@ -34,21 +34,23 @@ import android.provider.Settings;
import android.widget.Switch; import android.widget.Switch;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settingslib.testutils.shadow.ShadowInteractionJankMonitor; import com.android.settingslib.testutils.shadow.ShadowInteractionJankMonitor;
import com.android.settingslib.widget.MainSwitchPreference; import com.android.settingslib.widget.MainSwitchPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers; import org.mockito.Answers;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = { @Config(shadows = {
@@ -56,7 +58,10 @@ import org.robolectric.shadow.api.Shadow;
ShadowActivityManager.class, ShadowActivityManager.class,
}) })
public class BubbleNotificationPreferenceControllerTest { public class BubbleNotificationPreferenceControllerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String KEY_NOTIFICATION_BUBBLES = "notification_bubbles";
private Context mContext; private Context mContext;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -67,33 +72,29 @@ public class BubbleNotificationPreferenceControllerTest {
private BubbleNotificationPreferenceController mController; private BubbleNotificationPreferenceController mController;
private MainSwitchPreference mPreference; private MainSwitchPreference mPreference;
private static final String KEY_NOTIFICATION_BUBBLES = "notification_bubbles"; private ShadowActivityManager mActivityManager;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mContext = ApplicationProvider.getApplicationContext();
mContext = RuntimeEnvironment.application;
mController = new BubbleNotificationPreferenceController(mContext, mController = new BubbleNotificationPreferenceController(mContext,
KEY_NOTIFICATION_BUBBLES); KEY_NOTIFICATION_BUBBLES);
mPreference = new MainSwitchPreference(RuntimeEnvironment.application); mPreference = new MainSwitchPreference(mContext);
mPreference.setKey(mController.getPreferenceKey()); mPreference.setKey(mController.getPreferenceKey());
when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
mActivityManager = Shadow.extract(mContext.getSystemService(ActivityManager.class));
} }
@Test @Test
public void isAvailable_lowRam_returnsUnsupported() { public void isAvailable_lowRam_returnsUnsupported() {
final ShadowActivityManager activityManager = mActivityManager.setIsLowRamDevice(true);
Shadow.extract(mContext.getSystemService(ActivityManager.class));
activityManager.setIsLowRamDevice(true);
assertEquals(UNSUPPORTED_ON_DEVICE, mController.getAvailabilityStatus()); assertEquals(UNSUPPORTED_ON_DEVICE, mController.getAvailabilityStatus());
} }
@Test @Test
public void isAvailable_notLowRam_returnsAvailable() { public void isAvailable_notLowRam_returnsAvailable() {
final ShadowActivityManager activityManager = mActivityManager.setIsLowRamDevice(false);
Shadow.extract(mContext.getSystemService(ActivityManager.class));
activityManager.setIsLowRamDevice(false);
assertEquals(AVAILABLE, mController.getAvailabilityStatus()); assertEquals(AVAILABLE, mController.getAvailabilityStatus());
} }

View File

@@ -30,17 +30,17 @@ import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = { @Config(shadows = {
@@ -48,19 +48,23 @@ import org.robolectric.shadow.api.Shadow;
}) })
public class BubbleSummaryNotificationPreferenceControllerTest { public class BubbleSummaryNotificationPreferenceControllerTest {
private static final String KEY_NOTIFICATION_BUBBLES = "notification_bubbles";
private Context mContext; private Context mContext;
private BubbleSummaryNotificationPreferenceController mController; private BubbleSummaryNotificationPreferenceController mController;
private Preference mPreference; private Preference mPreference;
private static final String KEY_NOTIFICATION_BUBBLES = "notification_bubbles"; private ShadowActivityManager mActivityManager;
@Before @Before
public void setUp() { public void setUp() {
mContext = RuntimeEnvironment.application; mContext = ApplicationProvider.getApplicationContext();
mController = new BubbleSummaryNotificationPreferenceController(mContext, mController = new BubbleSummaryNotificationPreferenceController(mContext,
KEY_NOTIFICATION_BUBBLES); KEY_NOTIFICATION_BUBBLES);
mPreference = new Preference(RuntimeEnvironment.application); mPreference = new Preference(mContext);
mActivityManager =
Shadow.extract(mContext.getSystemService(ActivityManager.class));
} }
@Test @Test
@@ -80,17 +84,13 @@ public class BubbleSummaryNotificationPreferenceControllerTest {
@Test @Test
public void isAvailable_lowRam_returnsUnsupported() { public void isAvailable_lowRam_returnsUnsupported() {
final ShadowActivityManager activityManager = mActivityManager.setIsLowRamDevice(true);
Shadow.extract(mContext.getSystemService(ActivityManager.class));
activityManager.setIsLowRamDevice(true);
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
} }
@Test @Test
public void isAvailable_notLowRam_returnsAvailable() { public void isAvailable_notLowRam_returnsAvailable() {
final ShadowActivityManager activityManager = mActivityManager.setIsLowRamDevice(false);
Shadow.extract(mContext.getSystemService(ActivityManager.class));
activityManager.setIsLowRamDevice(false);
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
} }
} }

View File

@@ -55,24 +55,26 @@ import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.NotificationBackend;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.RestrictedSwitchPreference;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers; import org.mockito.Answers;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList; import java.util.ArrayList;
@@ -83,6 +85,8 @@ import java.util.List;
ShadowActivityManager.class, ShadowActivityManager.class,
}) })
public class BubblePreferenceControllerTest { public class BubblePreferenceControllerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private Context mContext; private Context mContext;
@Mock @Mock
@@ -103,11 +107,10 @@ public class BubblePreferenceControllerTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this);
ShadowApplication shadowApplication = ShadowApplication.getInstance(); ShadowApplication shadowApplication = ShadowApplication.getInstance();
shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm); shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm);
shadowApplication.setSystemService(Context.USER_SERVICE, mUm); shadowApplication.setSystemService(Context.USER_SERVICE, mUm);
mContext = RuntimeEnvironment.application; mContext = ApplicationProvider.getApplicationContext();
when(mFragmentManager.beginTransaction()).thenReturn(mock(FragmentTransaction.class)); when(mFragmentManager.beginTransaction()).thenReturn(mock(FragmentTransaction.class));
mController = spy(new BubblePreferenceController(mContext, mFragmentManager, mBackend, mController = spy(new BubblePreferenceController(mContext, mFragmentManager, mBackend,
false /* isAppPage */, mListener)); false /* isAppPage */, mListener));

View File

@@ -43,27 +43,30 @@ import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.NotificationBackend;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowActivityManager;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = { @Config(shadows = {
ShadowActivityManager.class, ShadowActivityManager.class,
}) })
public class BubbleSummaryPreferenceControllerTest { public class BubbleSummaryPreferenceControllerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private Context mContext; private Context mContext;
@Mock @Mock
@@ -72,16 +75,17 @@ public class BubbleSummaryPreferenceControllerTest {
private BubbleSummaryPreferenceController mController; private BubbleSummaryPreferenceController mController;
private ShadowActivityManager mActivityManager;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mContext = ApplicationProvider.getApplicationContext();
ShadowApplication shadowApplication = ShadowApplication.getInstance();
mContext = RuntimeEnvironment.application;
when(mBackend.hasSentValidBubble(anyString(), anyInt())).thenReturn(true); when(mBackend.hasSentValidBubble(anyString(), anyInt())).thenReturn(true);
mAppRow = new NotificationBackend.AppRow(); mAppRow = new NotificationBackend.AppRow();
mAppRow.pkg = "pkg"; mAppRow.pkg = "pkg";
mAppRow.uid = 0; mAppRow.uid = 0;
mController = spy(new BubbleSummaryPreferenceController(mContext, mBackend)); mController = spy(new BubbleSummaryPreferenceController(mContext, mBackend));
mActivityManager = Shadow.extract(mContext.getSystemService(ActivityManager.class));
} }
@Test @Test
@@ -151,9 +155,7 @@ public class BubbleSummaryPreferenceControllerTest {
Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
mController.onResume(mAppRow, null, null, null, null, null, null); mController.onResume(mAppRow, null, null, null, null, null, null);
final ShadowActivityManager activityManager = mActivityManager.setIsLowRamDevice(true);
Shadow.extract(mContext.getSystemService(ActivityManager.class));
activityManager.setIsLowRamDevice(true);
assertFalse(mController.isAvailable()); assertFalse(mController.isAvailable());
} }
@@ -162,9 +164,7 @@ public class BubbleSummaryPreferenceControllerTest {
Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
mController.onResume(mAppRow, null, null, null, null, null, null); mController.onResume(mAppRow, null, null, null, null, null, null);
final ShadowActivityManager activityManager = mActivityManager.setIsLowRamDevice(false);
Shadow.extract(mContext.getSystemService(ActivityManager.class));
activityManager.setIsLowRamDevice(false);
assertTrue(mController.isAvailable()); assertTrue(mController.isAvailable());
} }