PhoneNumberPreferenceControllerTest converted to JUnit
Actual preferenceScreen used rather than mock, since it is a final class ArgumentCaptor used to get clip data text. Test: atest -c PhoneNumberPreferenceControllerTest Change-Id: Ib33be3bc7d9b506523be408a44f31417f0faa4c1
This commit is contained in:
@@ -133,7 +133,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
SubscriptionInfo getSubscriptionInfo(int simSlot) {
|
protected SubscriptionInfo getSubscriptionInfo(int simSlot) {
|
||||||
final List<SubscriptionInfo> subscriptionInfoList =
|
final List<SubscriptionInfo> subscriptionInfoList =
|
||||||
mSubscriptionManager.getActiveSubscriptionInfoList();
|
mSubscriptionManager.getActiveSubscriptionInfoList();
|
||||||
if (subscriptionInfoList != null) {
|
if (subscriptionInfoList != null) {
|
||||||
@@ -147,7 +147,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) {
|
protected CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) {
|
||||||
final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
|
final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
|
||||||
subscriptionInfo);
|
subscriptionInfo);
|
||||||
return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
|
return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
|
||||||
@@ -155,7 +155,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Preference createNewPreference(Context context) {
|
protected Preference createNewPreference(Context context) {
|
||||||
return new Preference(context);
|
return new Preference(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -21,38 +21,43 @@ import static android.content.Context.CLIPBOARD_SERVICE;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Looper;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceManager;
|
||||||
import androidx.preference.PreferenceScreen;
|
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.core.BasePreferenceController;
|
||||||
|
import com.android.settings.testutils.ResourcesUtils;
|
||||||
|
|
||||||
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.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
|
||||||
import org.robolectric.RuntimeEnvironment;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class PhoneNumberPreferenceControllerTest {
|
public class PhoneNumberPreferenceControllerTest {
|
||||||
|
|
||||||
@Mock
|
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
@Mock
|
@Mock
|
||||||
private Preference mSecondPreference;
|
private Preference mSecondPreference;
|
||||||
@@ -62,25 +67,34 @@ public class PhoneNumberPreferenceControllerTest {
|
|||||||
private SubscriptionInfo mSubscriptionInfo;
|
private SubscriptionInfo mSubscriptionInfo;
|
||||||
@Mock
|
@Mock
|
||||||
private SubscriptionManager mSubscriptionManager;
|
private SubscriptionManager mSubscriptionManager;
|
||||||
@Mock
|
|
||||||
private PreferenceScreen mScreen;
|
private PreferenceScreen mScreen;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private PhoneNumberPreferenceController mController;
|
private PhoneNumberPreferenceController mController;
|
||||||
|
private ClipboardManager mClipboardManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
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(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
|
||||||
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
|
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
|
||||||
mController = spy(new PhoneNumberPreferenceController(mContext, "phone_number"));
|
mController = spy(new PhoneNumberPreferenceController(mContext, "phone_number"));
|
||||||
final String prefKey = mController.getPreferenceKey();
|
|
||||||
when(mScreen.findPreference(prefKey)).thenReturn(mPreference);
|
if (Looper.myLooper() == null) {
|
||||||
when(mScreen.getContext()).thenReturn(mContext);
|
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(mSubscriptionInfo).when(mController).getSubscriptionInfo(anyInt());
|
||||||
doReturn(mSecondPreference).when(mController).createNewPreference(mContext);
|
doReturn(mSecondPreference).when(mController).createNewPreference(mContext);
|
||||||
when(mPreference.isVisible()).thenReturn(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -105,7 +119,7 @@ public class PhoneNumberPreferenceControllerTest {
|
|||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
verify(mScreen).addPreference(mSecondPreference);
|
assertThat(mScreen.getPreferenceCount()).isEqualTo(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -117,7 +131,7 @@ public class PhoneNumberPreferenceControllerTest {
|
|||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
verify(mPreference).setTitle(mContext.getString(R.string.status_number));
|
verify(mPreference).setTitle(ResourcesUtils.getResourcesString(mContext, "status_number"));
|
||||||
verify(mPreference).setSummary(phoneNumber);
|
verify(mPreference).setSummary(phoneNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,11 +144,11 @@ public class PhoneNumberPreferenceControllerTest {
|
|||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
verify(mPreference).setTitle(
|
verify(mPreference).setTitle(ResourcesUtils.getResourcesString(
|
||||||
mContext.getString(R.string.status_number_sim_slot, 1 /* sim slot */));
|
mContext, "status_number_sim_slot", 1 /* sim slot */));
|
||||||
verify(mPreference).setSummary(phoneNumber);
|
verify(mPreference).setSummary(phoneNumber);
|
||||||
verify(mSecondPreference).setTitle(
|
verify(mSecondPreference).setTitle(ResourcesUtils.getResourcesString(
|
||||||
mContext.getString(R.string.status_number_sim_slot, 2 /* sim slot */));
|
mContext, "status_number_sim_slot", 2 /* sim slot */));
|
||||||
verify(mSecondPreference).setSummary(phoneNumber);
|
verify(mSecondPreference).setSummary(phoneNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,7 +159,8 @@ public class PhoneNumberPreferenceControllerTest {
|
|||||||
CharSequence primaryNumber = mController.getSummary();
|
CharSequence primaryNumber = mController.getSummary();
|
||||||
|
|
||||||
assertThat(primaryNumber).isNotNull();
|
assertThat(primaryNumber).isNotNull();
|
||||||
assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default));
|
assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString(
|
||||||
|
mContext, "device_info_default"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -155,22 +170,24 @@ public class PhoneNumberPreferenceControllerTest {
|
|||||||
|
|
||||||
CharSequence primaryNumber = mController.getSummary();
|
CharSequence primaryNumber = mController.getSummary();
|
||||||
|
|
||||||
assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default));
|
assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString(
|
||||||
|
mContext, "device_info_default"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@UiThreadTest
|
||||||
public void copy_shouldCopyPhoneNumberToClipboard() {
|
public void copy_shouldCopyPhoneNumberToClipboard() {
|
||||||
final List<SubscriptionInfo> list = new ArrayList<>();
|
final List<SubscriptionInfo> list = new ArrayList<>();
|
||||||
list.add(mSubscriptionInfo);
|
list.add(mSubscriptionInfo);
|
||||||
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(list);
|
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(list);
|
||||||
final String phoneNumber = "1111111111";
|
final String phoneNumber = "1111111111";
|
||||||
doReturn(phoneNumber).when(mController).getFormattedPhoneNumber(mSubscriptionInfo);
|
doReturn(phoneNumber).when(mController).getFormattedPhoneNumber(mSubscriptionInfo);
|
||||||
|
ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class);
|
||||||
|
doNothing().when(mClipboardManager).setPrimaryClip(captor.capture());
|
||||||
|
|
||||||
mController.copy();
|
mController.copy();
|
||||||
|
|
||||||
final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
|
final CharSequence data = captor.getValue().getItemAt(0).getText();
|
||||||
CLIPBOARD_SERVICE);
|
|
||||||
final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
|
|
||||||
assertThat(phoneNumber.contentEquals(data)).isTrue();
|
assertThat(phoneNumber.contentEquals(data)).isTrue();
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user