Loading src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +3 −3 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { } @VisibleForTesting SubscriptionInfo getSubscriptionInfo(int simSlot) { protected SubscriptionInfo getSubscriptionInfo(int simSlot) { final List<SubscriptionInfo> subscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(); if (subscriptionInfoList != null) { Loading @@ -147,7 +147,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { } @VisibleForTesting CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { protected CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, subscriptionInfo); return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) Loading @@ -155,7 +155,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { } @VisibleForTesting Preference createNewPreference(Context context) { protected Preference createNewPreference(Context context) { return new Preference(context); } } tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java→tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java +39 −22 Original line number Diff line number Diff line Loading @@ -21,38 +21,43 @@ import static android.content.Context.CLIPBOARD_SERVICE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.os.Looper; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.test.annotation.UiThreadTest; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.testutils.ResourcesUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) @RunWith(AndroidJUnit4.class) public class PhoneNumberPreferenceControllerTest { @Mock private Preference mPreference; @Mock private Preference mSecondPreference; Loading @@ -62,25 +67,34 @@ public class PhoneNumberPreferenceControllerTest { private SubscriptionInfo mSubscriptionInfo; @Mock private SubscriptionManager mSubscriptionManager; @Mock private PreferenceScreen mScreen; private Context mContext; private PhoneNumberPreferenceController mController; private ClipboardManager mClipboardManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mContext = spy(ApplicationProvider.getApplicationContext()); mClipboardManager = (ClipboardManager) spy(mContext.getSystemService(CLIPBOARD_SERVICE)); doReturn(mClipboardManager).when(mContext).getSystemService(CLIPBOARD_SERVICE); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); mController = spy(new PhoneNumberPreferenceController(mContext, "phone_number")); final String prefKey = mController.getPreferenceKey(); when(mScreen.findPreference(prefKey)).thenReturn(mPreference); when(mScreen.getContext()).thenReturn(mContext); if (Looper.myLooper() == null) { Looper.prepare(); } final PreferenceManager preferenceManager = new PreferenceManager(mContext); mScreen = preferenceManager.createPreferenceScreen(mContext); mPreference = spy(new Preference(mContext)); mPreference.setKey(mController.getPreferenceKey()); mPreference.setVisible(true); mScreen.addPreference(mPreference); doReturn(mSubscriptionInfo).when(mController).getSubscriptionInfo(anyInt()); doReturn(mSecondPreference).when(mController).createNewPreference(mContext); when(mPreference.isVisible()).thenReturn(true); } @Test Loading @@ -105,7 +119,7 @@ public class PhoneNumberPreferenceControllerTest { mController.displayPreference(mScreen); verify(mScreen).addPreference(mSecondPreference); assertThat(mScreen.getPreferenceCount()).isEqualTo(2); } @Test Loading @@ -117,7 +131,7 @@ public class PhoneNumberPreferenceControllerTest { mController.updateState(mPreference); verify(mPreference).setTitle(mContext.getString(R.string.status_number)); verify(mPreference).setTitle(ResourcesUtils.getResourcesString(mContext, "status_number")); verify(mPreference).setSummary(phoneNumber); } Loading @@ -130,11 +144,11 @@ public class PhoneNumberPreferenceControllerTest { mController.updateState(mPreference); verify(mPreference).setTitle( mContext.getString(R.string.status_number_sim_slot, 1 /* sim slot */)); verify(mPreference).setTitle(ResourcesUtils.getResourcesString( mContext, "status_number_sim_slot", 1 /* sim slot */)); verify(mPreference).setSummary(phoneNumber); verify(mSecondPreference).setTitle( mContext.getString(R.string.status_number_sim_slot, 2 /* sim slot */)); verify(mSecondPreference).setTitle(ResourcesUtils.getResourcesString( mContext, "status_number_sim_slot", 2 /* sim slot */)); verify(mSecondPreference).setSummary(phoneNumber); } Loading @@ -145,7 +159,8 @@ public class PhoneNumberPreferenceControllerTest { CharSequence primaryNumber = mController.getSummary(); assertThat(primaryNumber).isNotNull(); assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default)); assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString( mContext, "device_info_default")); } @Test Loading @@ -155,22 +170,24 @@ public class PhoneNumberPreferenceControllerTest { CharSequence primaryNumber = mController.getSummary(); assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default)); assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString( mContext, "device_info_default")); } @Test @UiThreadTest public void copy_shouldCopyPhoneNumberToClipboard() { final List<SubscriptionInfo> list = new ArrayList<>(); list.add(mSubscriptionInfo); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(list); final String phoneNumber = "1111111111"; doReturn(phoneNumber).when(mController).getFormattedPhoneNumber(mSubscriptionInfo); ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class); doNothing().when(mClipboardManager).setPrimaryClip(captor.capture()); mController.copy(); final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( CLIPBOARD_SERVICE); final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); final CharSequence data = captor.getValue().getItemAt(0).getText(); assertThat(phoneNumber.contentEquals(data)).isTrue(); } } Loading
src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +3 −3 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { } @VisibleForTesting SubscriptionInfo getSubscriptionInfo(int simSlot) { protected SubscriptionInfo getSubscriptionInfo(int simSlot) { final List<SubscriptionInfo> subscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(); if (subscriptionInfoList != null) { Loading @@ -147,7 +147,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { } @VisibleForTesting CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { protected CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, subscriptionInfo); return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) Loading @@ -155,7 +155,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { } @VisibleForTesting Preference createNewPreference(Context context) { protected Preference createNewPreference(Context context) { return new Preference(context); } }
tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java→tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java +39 −22 Original line number Diff line number Diff line Loading @@ -21,38 +21,43 @@ import static android.content.Context.CLIPBOARD_SERVICE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.os.Looper; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.test.annotation.UiThreadTest; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.testutils.ResourcesUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) @RunWith(AndroidJUnit4.class) public class PhoneNumberPreferenceControllerTest { @Mock private Preference mPreference; @Mock private Preference mSecondPreference; Loading @@ -62,25 +67,34 @@ public class PhoneNumberPreferenceControllerTest { private SubscriptionInfo mSubscriptionInfo; @Mock private SubscriptionManager mSubscriptionManager; @Mock private PreferenceScreen mScreen; private Context mContext; private PhoneNumberPreferenceController mController; private ClipboardManager mClipboardManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mContext = spy(ApplicationProvider.getApplicationContext()); mClipboardManager = (ClipboardManager) spy(mContext.getSystemService(CLIPBOARD_SERVICE)); doReturn(mClipboardManager).when(mContext).getSystemService(CLIPBOARD_SERVICE); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); mController = spy(new PhoneNumberPreferenceController(mContext, "phone_number")); final String prefKey = mController.getPreferenceKey(); when(mScreen.findPreference(prefKey)).thenReturn(mPreference); when(mScreen.getContext()).thenReturn(mContext); if (Looper.myLooper() == null) { Looper.prepare(); } final PreferenceManager preferenceManager = new PreferenceManager(mContext); mScreen = preferenceManager.createPreferenceScreen(mContext); mPreference = spy(new Preference(mContext)); mPreference.setKey(mController.getPreferenceKey()); mPreference.setVisible(true); mScreen.addPreference(mPreference); doReturn(mSubscriptionInfo).when(mController).getSubscriptionInfo(anyInt()); doReturn(mSecondPreference).when(mController).createNewPreference(mContext); when(mPreference.isVisible()).thenReturn(true); } @Test Loading @@ -105,7 +119,7 @@ public class PhoneNumberPreferenceControllerTest { mController.displayPreference(mScreen); verify(mScreen).addPreference(mSecondPreference); assertThat(mScreen.getPreferenceCount()).isEqualTo(2); } @Test Loading @@ -117,7 +131,7 @@ public class PhoneNumberPreferenceControllerTest { mController.updateState(mPreference); verify(mPreference).setTitle(mContext.getString(R.string.status_number)); verify(mPreference).setTitle(ResourcesUtils.getResourcesString(mContext, "status_number")); verify(mPreference).setSummary(phoneNumber); } Loading @@ -130,11 +144,11 @@ public class PhoneNumberPreferenceControllerTest { mController.updateState(mPreference); verify(mPreference).setTitle( mContext.getString(R.string.status_number_sim_slot, 1 /* sim slot */)); verify(mPreference).setTitle(ResourcesUtils.getResourcesString( mContext, "status_number_sim_slot", 1 /* sim slot */)); verify(mPreference).setSummary(phoneNumber); verify(mSecondPreference).setTitle( mContext.getString(R.string.status_number_sim_slot, 2 /* sim slot */)); verify(mSecondPreference).setTitle(ResourcesUtils.getResourcesString( mContext, "status_number_sim_slot", 2 /* sim slot */)); verify(mSecondPreference).setSummary(phoneNumber); } Loading @@ -145,7 +159,8 @@ public class PhoneNumberPreferenceControllerTest { CharSequence primaryNumber = mController.getSummary(); assertThat(primaryNumber).isNotNull(); assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default)); assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString( mContext, "device_info_default")); } @Test Loading @@ -155,22 +170,24 @@ public class PhoneNumberPreferenceControllerTest { CharSequence primaryNumber = mController.getSummary(); assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default)); assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString( mContext, "device_info_default")); } @Test @UiThreadTest public void copy_shouldCopyPhoneNumberToClipboard() { final List<SubscriptionInfo> list = new ArrayList<>(); list.add(mSubscriptionInfo); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(list); final String phoneNumber = "1111111111"; doReturn(phoneNumber).when(mController).getFormattedPhoneNumber(mSubscriptionInfo); ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class); doNothing().when(mClipboardManager).setPrimaryClip(captor.capture()); mController.copy(); final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( CLIPBOARD_SERVICE); final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); final CharSequence data = captor.getValue().getItemAt(0).getText(); assertThat(phoneNumber.contentEquals(data)).isTrue(); } }