Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e1b7913 authored by Jeremy Goldman's avatar Jeremy Goldman Committed by Android (Google) Code Review
Browse files

Merge "PhoneNumberPreferenceControllerTest converted to JUnit"

parents d071eb87 804b9a4d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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) {
@@ -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)
@@ -155,7 +155,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
    }

    @VisibleForTesting
    Preference createNewPreference(Context context) {
    protected Preference createNewPreference(Context context) {
        return new Preference(context);
    }
}
+39 −22
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -105,7 +119,7 @@ public class PhoneNumberPreferenceControllerTest {

        mController.displayPreference(mScreen);

        verify(mScreen).addPreference(mSecondPreference);
        assertThat(mScreen.getPreferenceCount()).isEqualTo(2);
    }

    @Test
@@ -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);
    }

@@ -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);
    }

@@ -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
@@ -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();
    }
}