diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java index 5cfe4047d7d..a682055e9d9 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java @@ -44,9 +44,6 @@ import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.search.SearchIndexableRaw; -import java.util.ArrayList; -import java.util.List; - import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -57,6 +54,9 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import java.util.ArrayList; +import java.util.List; + @RunWith(RobolectricTestRunner.class) public class SimStatusPreferenceControllerTest { @@ -93,7 +93,6 @@ public class SimStatusPreferenceControllerTest { mResources = spy(mContext.getResources()); when(mContext.getResources()).thenReturn(mResources); - when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); mockService(Context.TELEPHONY_SERVICE, TelephonyManager.class, mTelephonyManager); mockService(Context.TELEPHONY_SUBSCRIPTION_SERVICE, SubscriptionManager.class, @@ -114,7 +113,12 @@ public class SimStatusPreferenceControllerTest { return 0; } }); - doReturn(BasePreferenceController.AVAILABLE).when(mController).getAvailabilityStatus(); + + // Availability defaults + when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); + when(mTelephonyManager.isDataCapable()).thenReturn(true); + when(mUserManager.isAdminUser()).thenReturn(true); + when(mScreen.getContext()).thenReturn(mContext); final String categoryKey = "device_detail_category"; when(mScreen.findPreference(categoryKey)).thenReturn(mCategory); @@ -210,6 +214,46 @@ public class SimStatusPreferenceControllerTest { assertThat(rawData.size()).isEqualTo(1); } + @Test + public void getAvailabilityStatus_showSimInfo_telephonyDataCapable_userAdmindisplayed() { + SlotSimStatus slotSimStatus = new TestSlotSimStatus(mContext); + mController.init(mFragment, slotSimStatus); + + // Use defaults + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.AVAILABLE); + } + + @Test + public void getAvailabilityStatus_notShowSimInfo_telephonyDataCapable_userAdmin_notDisplayed() { + SlotSimStatus slotSimStatus = new TestSlotSimStatus(mContext); + mController.init(mFragment, slotSimStatus); + + when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(false); + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.CONDITIONALLY_UNAVAILABLE); + } + + @Test + public void getAvailabilityStatus_showSimInfo_notTelephonyDataCapable_userAdmin_notDisplayed() { + SlotSimStatus slotSimStatus = new TestSlotSimStatus(mContext); + mController.init(mFragment, slotSimStatus); + + when(mTelephonyManager.isDataCapable()).thenReturn(false); + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.CONDITIONALLY_UNAVAILABLE); + } + + @Test + public void getAvailabilityStatus_showSimInfo_telephonyDataCapable_notUserAdmin_notDisplayed() { + SlotSimStatus slotSimStatus = new TestSlotSimStatus(mContext); + mController.init(mFragment, slotSimStatus); + + when(mUserManager.isAdminUser()).thenReturn(false); + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.CONDITIONALLY_UNAVAILABLE); + } + private void mockService(String serviceName, Class serviceClass, T service) { when(mContext.getSystemServiceName(serviceClass)).thenReturn(serviceName); when(mContext.getSystemService(serviceName)).thenReturn(service);