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

Commit 199cae42 authored by Bonian Chen's avatar Bonian Chen
Browse files

[AutoTest] Settings Telephony part

Change design to avoid using Robolectric.setupActivity()

Bug: 140707056
Test: make RunSettingsRoboTests ROBOTEST_FILTER=EuiccPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=DataServiceSetupPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=ApnPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=MobileNetworkActivityTest
make RunSettingsRoboTests ROBOTEST_FILTER=DataUsagePreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=ApnEditorTest
make RunSettingsRoboTests ROBOTEST_FILTER=MobileNetworkSummaryControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=SubscriptionsPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=MobileNetworkListControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=MobileNetworkPreferenceControllerTest

Change-Id: Ifacd2e6c8733d8e814a277cf34d6f7eb1a9ddba4
parent 2cc52071
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
@@ -98,27 +99,33 @@ public class ApnEditorTest {
    @Mock
    private Cursor mCursor;

    @Mock
    private FragmentActivity mActivity;

    @Captor
    private ArgumentCaptor<Uri> mUriCaptor;

    private ApnEditor mApnEditorUT;
    private FragmentActivity mActivity;
    private Context mContext;
    private Resources mResources;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
        mResources = mActivity.getResources();
        mContext = spy(RuntimeEnvironment.application);

        mResources = mContext.getResources();
        mApnEditorUT = spy(new ApnEditor());

        doReturn(mActivity).when(mApnEditorUT).getActivity();
        doReturn(mResources).when(mApnEditorUT).getResources();
        doNothing().when(mApnEditorUT).finish();
        doNothing().when(mApnEditorUT).showError();
        when(mApnEditorUT.getContext()).thenReturn(RuntimeEnvironment.application);
        doReturn(mContext).when(mApnEditorUT).getContext();
        doReturn(mContext.getTheme()).when(mActivity).getTheme();
        doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver();

        setMockPreference(mActivity);
        setMockPreference(mContext);
        mApnEditorUT.mApnData = new FakeApnData(APN_DATA);
        mApnEditorUT.sNotSet = "Not Set";
    }
@@ -319,7 +326,7 @@ public class ApnEditorTest {

        // WHEN press the back button
        final KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
        mApnEditorUT.onKey(new View(mActivity), KeyEvent.KEYCODE_BACK, event);
        mApnEditorUT.onKey(new View(mContext), KeyEvent.KEYCODE_BACK, event);

        // THEN the apn data is saved and the apn editor is closed
        verify(mApnEditorUT).validateAndSaveApnData();
@@ -459,6 +466,7 @@ public class ApnEditorTest {
    @Test
    @Config(shadows = ShadowFragment.class)
    public void onCreate_noAction_shouldFinishAndNoCrash() {
        doReturn(new Intent()).when(mActivity).getIntent();
        doNothing().when(mApnEditorUT).addPreferencesFromResource(anyInt());

        mApnEditorUT.onCreate(null);
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -47,6 +48,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

import java.util.Arrays;

@@ -76,7 +78,7 @@ public class MobileNetworkListControllerTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(Robolectric.setupActivity(Activity.class));
        mContext = spy(RuntimeEnvironment.application);
        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
        when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager);
        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
@@ -137,9 +139,9 @@ public class MobileNetworkListControllerTest {

        // Check that the onclick listeners are setup to fire with the right subscription id.
        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
        doNothing().when(mContext).startActivity(intentCaptor.capture());
        pref1.getOnPreferenceClickListener().onPreferenceClick(pref1);
        pref2.getOnPreferenceClickListener().onPreferenceClick(pref2);
        verify(mContext, times(2)).startActivity(intentCaptor.capture());
        final Intent intent1 = intentCaptor.getAllValues().get(0);
        final Intent intent2 = intentCaptor.getAllValues().get(1);
        assertThat(intent1.getIntExtra(EXTRA_SUB_ID, INVALID_SUBSCRIPTION_ID)).isEqualTo(1);
+4 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static com.android.settings.network.MobileNetworkPreferenceController.MOB

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -61,6 +62,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

@RunWith(RobolectricTestRunner.class)
@@ -81,7 +83,7 @@ public class MobileNetworkPreferenceControllerTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(Robolectric.setupActivity(Activity.class));
        mContext = spy(RuntimeEnvironment.application);
        mLifecycleOwner = () -> mLifecycle;
        mLifecycle = new Lifecycle(mLifecycleOwner);
        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
@@ -190,10 +192,10 @@ public class MobileNetworkPreferenceControllerTest {
        mController = new MobileNetworkPreferenceController(mContext);
        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2, false);
        ArgumentCaptor<Intent> argument = ArgumentCaptor.forClass(Intent.class);
        doNothing().when(mContext).startActivity(argument.capture());

        mController.handlePreferenceTreeClick(mPreference);

        verify(mContext).startActivity(argument.capture());
        final ComponentName componentName = argument.getValue().getComponent();
        assertThat(componentName.getPackageName()).isEqualTo(MOBILE_NETWORK_PACKAGE);
        assertThat(componentName.getClassName()).isEqualTo(MOBILE_NETWORK_CLASS);
+11 −9
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.notNull;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
@@ -53,6 +54,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

import java.util.Arrays;

@@ -81,7 +83,7 @@ public class MobileNetworkSummaryControllerTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(Robolectric.setupActivity(Activity.class));
        mContext = spy(RuntimeEnvironment.application);
        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
        when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager);
@@ -130,9 +132,9 @@ public class MobileNetworkSummaryControllerTest {
        mController.onResume();
        assertThat(mController.getSummary()).isEqualTo("Add a network");

        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
        verify(mContext).startActivity(intentCaptor.capture());
        doNothing().when(mContext).startActivity(intentCaptor.capture());
        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        assertThat(intentCaptor.getValue().getAction()).isEqualTo(
                EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION);
    }
@@ -155,9 +157,9 @@ public class MobileNetworkSummaryControllerTest {
        mController.onResume();
        assertThat(mController.getSummary()).isEqualTo("sub1");
        assertThat(mPreference.getFragment()).isNull();
        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
        verify(mContext).startActivity(intentCaptor.capture());
        doNothing().when(mContext).startActivity(intentCaptor.capture());
        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        Intent intent = intentCaptor.getValue();
        assertThat(intent.getComponent().getClassName()).isEqualTo(
                MobileNetworkActivity.class.getName());
@@ -218,9 +220,9 @@ public class MobileNetworkSummaryControllerTest {
        mController.onSubscriptionsChanged();
        assertThat(mController.getSummary()).isEqualTo("sub1");
        assertThat(mPreference.getFragment()).isNull();
        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
        verify(mContext).startActivity(intentCaptor.capture());
        doNothing().when(mContext).startActivity(intentCaptor.capture());
        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo(
                MobileNetworkActivity.class.getName());
    }
@@ -239,9 +241,9 @@ public class MobileNetworkSummaryControllerTest {
        mController.onResume();
        assertThat(mController.getSummary()).isEqualTo("sub1");
        assertThat(mPreference.getFragment()).isNull();
        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
        verify(mContext).startActivity(intentCaptor.capture());
        doNothing().when(mContext).startActivity(intentCaptor.capture());
        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
        assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo(
                MobileNetworkActivity.class.getName());

+6 −4
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -63,6 +64,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowSubscriptionManager;

@@ -107,7 +109,7 @@ public class SubscriptionsPreferenceControllerTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(Robolectric.setupActivity(Activity.class));
        mContext = spy(RuntimeEnvironment.application);
        mLifecycleOwner = () -> mLifecycle;
        mLifecycle = new Lifecycle(mLifecycleOwner);
        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
@@ -257,14 +259,14 @@ public class SubscriptionsPreferenceControllerTest {
     */
    private void runPreferenceClickTest(final int subscriptionCount, final int selectedPrefIndex) {
        final List<SubscriptionInfo> subs = setupMockSubscriptions(subscriptionCount);
        mController.displayPreference(mScreen);
        final ArgumentCaptor<Preference> prefCaptor = ArgumentCaptor.forClass(Preference.class);
        mController.displayPreference(mScreen);
        verify(mPreferenceCategory, times(subscriptionCount)).addPreference(prefCaptor.capture());
        final List<Preference> prefs = prefCaptor.getAllValues();
        final Preference pref = prefs.get(selectedPrefIndex);
        pref.getOnPreferenceClickListener().onPreferenceClick(pref);
        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
        verify(mContext).startActivity(intentCaptor.capture());
        doNothing().when(mContext).startActivity(intentCaptor.capture());
        pref.getOnPreferenceClickListener().onPreferenceClick(pref);
        final Intent intent = intentCaptor.getValue();
        assertThat(intent).isNotNull();
        assertThat(intent.hasExtra(Settings.EXTRA_SUB_ID)).isTrue();
Loading