package com.android.settings.fuelgauge;
import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settings.testutils.shadow.ShadowFragment;
+import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
import org.junit.Before;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import androidx.preference.Preference;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {SettingsShadowResources.SettingsShadowTheme.class, ShadowFragment.class})
public class BackgroundActivityPreferenceControllerTest {
@Mock
private PowerWhitelistBackend mPowerWhitelistBackend;
private BackgroundActivityPreferenceController mController;
- private Preference mPreference;
+ private RestrictedPreference mPreference;
private Context mShadowContext;
private BatteryUtils mBatteryUtils;
mBatteryUtils = spy(new BatteryUtils(mShadowContext));
doNothing().when(mBatteryUtils).setForceAppStandby(anyInt(), anyString(), anyInt());
- mPreference = new Preference(mShadowContext);
+ mPreference = spy(new RestrictedPreference(mShadowContext, null /* attrs */));
mPreference.setKey(BackgroundActivityPreferenceController.KEY_BACKGROUND_ACTIVITY);
mController = spy(new BackgroundActivityPreferenceController(
mContext, mFragment, UID_LOW_SDK, LOW_SDK_PACKAGE, mPowerWhitelistBackend));
}
@Test
- public void testHandlePreferenceTreeClick_restrictApp_showDialog() {
+ public void handlePreferenceTreeClick_restrictApp_showDialog() {
doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager)
.checkOpNoThrow(anyInt(), anyInt(), anyString());
}
@Test
- public void testHandlePreferenceTreeClick_unRestrictApp_showDialog() {
+ public void handlePreferenceTreeClick_unRestrictApp_showDialog() {
doReturn(AppOpsManager.MODE_IGNORED).when(mAppOpsManager)
.checkOpNoThrow(anyInt(), anyInt(), anyString());
}
@Test
- public void testUpdateState_noError_setEnabled() {
+ public void updateState_noError_setEnabled() {
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_ALLOWED);
}
@Test
- public void testUpdateState_whitelisted() {
+ public void updateState_whitelisted() {
when(mPowerWhitelistBackend.isWhitelisted(LOW_SDK_PACKAGE)).thenReturn(true);
mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isFalse();
}
@Test
- public void testUpdateSummary_modeError_showSummaryDisabled() {
+ public void updateState_disabledByAdmin_doNothing() {
+ doReturn(true).when(mPreference).isDisabledByAdmin();
+
+ mController.updateState(mPreference);
+
+ verify(mPreference, never()).setEnabled(anyBoolean());
+ }
+
+ @Test
+ public void updateSummary_modeError_showSummaryDisabled() {
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_ERRORED);
final CharSequence expectedSummary = mShadowContext.getText(
}
@Test
- public void testUpdateSummary_modeDefault_showNotRestricted() {
+ public void updateSummary_modeDefault_showNotRestricted() {
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_DEFAULT);
}
@Test
- public void testUpdateSummary_modeIgnored_showRestricted() {
+ public void updateSummary_modeIgnored_showRestricted() {
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_IGNORED);
}
@Test
- public void testIsAvailable_ReturnTrue() {
+ public void isAvailable_ReturnTrue() {
assertThat(mController.isAvailable()).isTrue();
}
}