diff --git a/src/com/android/settings/network/NetworkResetPreferenceController.java b/src/com/android/settings/network/NetworkResetPreferenceController.java index af288fa88a5..ef3dca2fcd5 100644 --- a/src/com/android/settings/network/NetworkResetPreferenceController.java +++ b/src/com/android/settings/network/NetworkResetPreferenceController.java @@ -20,6 +20,7 @@ import android.content.Context; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.network.SubscriptionUtil; +import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; public class NetworkResetPreferenceController extends AbstractPreferenceController @@ -34,8 +35,9 @@ public class NetworkResetPreferenceController extends AbstractPreferenceControll @Override public boolean isAvailable() { - return (SubscriptionUtil.isSimHardwareVisible(mContext) && - (!mRestrictionChecker.hasUserRestriction())); + return (SubscriptionUtil.isSimHardwareVisible(mContext) + && !Utils.isWifiOnly(mContext) + && !mRestrictionChecker.hasUserRestriction()); } @Override diff --git a/tests/robotests/src/com/android/settings/network/NetworkResetPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/NetworkResetPreferenceControllerTest.java index 73f4b6a0b7b..e263ea7e1df 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkResetPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkResetPreferenceControllerTest.java @@ -19,9 +19,16 @@ package com.android.settings.network; import static com.google.common.truth.Truth.assertThat; 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 android.content.Context; +import android.content.res.Resources; +import android.telephony.TelephonyManager; + +import com.android.settings.R; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -34,28 +41,66 @@ import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) public class NetworkResetPreferenceControllerTest { + @Mock + private TelephonyManager mTelephonyManager; @Mock private NetworkResetRestrictionChecker mRestrictionChecker; private NetworkResetPreferenceController mController; + private Context mContext; + private Resources mResources; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mController = new NetworkResetPreferenceController(RuntimeEnvironment.application); + mContext = spy(RuntimeEnvironment.application); + + mResources = spy(mContext.getResources()); + when(mContext.getResources()).thenReturn(mResources); + when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager); + + mController = new NetworkResetPreferenceController(mContext); ReflectionHelpers.setField(mController, "mRestrictionChecker", mRestrictionChecker); + + // Availability defaults + when(mTelephonyManager.isDataCapable()).thenReturn(true); + when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); + when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(false); } @Test - public void testIsAvailable_shouldReturnTrueWhenNoUserRestriction() { - when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(true); + public void testIsAvailable_showSimInfo_notWifiOnly() { + assertThat(mController.isAvailable()).isTrue(); + } + @Test + public void testIsAvailable_hideSimInfo_notWifiOnly() { + when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(false); + assertThat(mController.isAvailable()).isFalse(); + } + + @Test + public void testIsAvailable_showSimInfo_wifiOnly() { + when(mTelephonyManager.isDataCapable()).thenReturn(false); + assertThat(mController.isAvailable()).isFalse(); + } + + @Test + public void testIsAvailable_userRestriction() { + when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(true); when(mRestrictionChecker.hasUserRestriction()).thenReturn(true); assertThat(mController.isAvailable()).isFalse(); + verify(mRestrictionChecker, never()).isRestrictionEnforcedByAdmin(); + } + + @Test + public void testIsAvailable_noUserRestriction() { + when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(true); when(mRestrictionChecker.hasUserRestriction()).thenReturn(false); assertThat(mController.isAvailable()).isTrue(); + verify(mRestrictionChecker, never()).isRestrictionEnforcedByAdmin(); } }