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

Commit e61a5e3b authored by Hugh Chen's avatar Hugh Chen
Browse files

Fix robotests failure in connectivity settings

Bug: 174212358
Test: make -j42 RunSettingsRoboTests
Change-Id: I50baeb18b00f16808dc958d77251a01ba991adf6
parent 2a6ffedf
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import androidx.test.core.content.pm.ApplicationInfoBuilder;

import com.android.settings.R;
import com.android.settings.nfc.NfcPreferenceController;
import com.android.settings.testutils.shadow.ShadowNfcAdapter;

import org.junit.Before;
import org.junit.Test;
@@ -43,7 +44,7 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowNfcAdapter;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowPackageManager;
import org.robolectric.util.ReflectionHelpers;

@@ -70,7 +71,7 @@ public class AdvancedConnectedDeviceControllerTest {
        mContentResolver = mContext.getContentResolver();
        mNfcController = new NfcPreferenceController(mContext,
                NfcPreferenceController.KEY_TOGGLE_NFC);
        mShadowNfcAdapter = Shadows.shadowOf(NfcAdapter.getNfcAdapter(mContext));
        mShadowNfcAdapter = Shadow.extract(NfcAdapter.getDefaultAdapter(mContext));
        mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
    }

+9 −10
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.settings.connecteddevice;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.nfc.NfcAdapter;
@@ -26,35 +25,38 @@ import android.provider.SearchIndexableResource;

import com.android.settings.nfc.AndroidBeamPreferenceController;
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowNfcAdapter;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.drawer.CategoryKey;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;

import java.util.List;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowUserManager.class,
        ShadowConnectivityManager.class})
        ShadowConnectivityManager.class, ShadowNfcAdapter.class})
public class AdvancedConnectedDeviceDashboardFragmentTest {

    private AdvancedConnectedDeviceDashboardFragment mFragment;

    @Mock
    private NfcAdapter mNfcAdapter;
    private Context mContext;
    private ShadowNfcAdapter mShadowNfcAdapter;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);

        mContext = spy(RuntimeEnvironment.application);
        mFragment = new AdvancedConnectedDeviceDashboardFragment();
        mShadowNfcAdapter = Shadow.extract(NfcAdapter.getDefaultAdapter(mContext));
    }

    @Test
@@ -79,13 +81,10 @@ public class AdvancedConnectedDeviceDashboardFragmentTest {

    @Test
    public void testSearchIndexProvider_correctNonIndexables() {
        Context context = spy(RuntimeEnvironment.application);
        when(context.getApplicationContext()).thenReturn(context);
        when(NfcAdapter.getDefaultAdapter(context)).thenReturn(mNfcAdapter);
        when(mNfcAdapter.isSecureNfcSupported()).thenReturn(true);
        mShadowNfcAdapter.setSecureNfcSupported(true);
        final List<String> niks =
                AdvancedConnectedDeviceDashboardFragment.SEARCH_INDEX_DATA_PROVIDER
                        .getNonIndexableKeys(context);
                        .getNonIndexableKeys(mContext);

        assertThat(niks).contains(AndroidBeamPreferenceController.KEY_ANDROID_BEAM_SETTINGS);
    }
+10 −7
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.nfc.NfcManager;
import android.os.UserManager;

import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowNfcAdapter;

import org.junit.Before;
import org.junit.Test;
@@ -37,9 +38,12 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.util.ReflectionHelpers;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowNfcAdapter.class)
public class NfcAndPaymentFragmentControllerTest {
    private NfcAndPaymentFragmentController mController;
    private Context mContext;
@@ -50,29 +54,28 @@ public class NfcAndPaymentFragmentControllerTest {
    private UserManager mUserManager;
    @Mock
    private NfcManager mNfcManager;
    @Mock
    private NfcAdapter mNfcAdapter;

    private ShadowNfcAdapter mShadowNfcAdapter;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        mShadowNfcAdapter = Shadow.extract(NfcAdapter.getDefaultAdapter(mContext));

        when(mContext.getApplicationContext()).thenReturn(mContext);
        when(mContext.getPackageManager()).thenReturn(mPackageManager);
        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
        when(mContext.getSystemService(Context.NFC_SERVICE)).thenReturn(mNfcManager);
        when(NfcAdapter.getDefaultAdapter(mContext)).thenReturn(mNfcAdapter);

        mController = new NfcAndPaymentFragmentController(mContext, "fakeKey");
        ReflectionHelpers.setField(mController, "mNfcAdapter", mNfcAdapter);
    }

    @Test
    public void getAvailabilityStatus_hasNfc_shouldReturnAvailable() {
        when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true);
        when(mUserManager.isAdminUser()).thenReturn(true);
        when(mNfcAdapter.isEnabled()).thenReturn(true);
        mShadowNfcAdapter.setEnabled(true);

        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(NfcAndPaymentFragmentController.AVAILABLE);
@@ -87,14 +90,14 @@ public class NfcAndPaymentFragmentControllerTest {

    @Test
    public void getSummary_nfcOn_shouldProvideOnSummary() {
        when(mNfcAdapter.isEnabled()).thenReturn(true);
        mShadowNfcAdapter.setEnabled(true);
        assertThat(mController.getSummary().toString()).contains(
                mContext.getString(R.string.switch_on_text));
    }

    @Test
    public void getSummary_nfcOff_shouldProvideOffSummary() {
        when(mNfcAdapter.isEnabled()).thenReturn(false);
        mShadowNfcAdapter.setEnabled(false);
        assertThat(mController.getSummary().toString()).contains(
                mContext.getString(R.string.switch_off_text));
    }
+17 −5
Original line number Diff line number Diff line
@@ -22,9 +22,12 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.pm.PackageManager;
import android.nfc.NfcAdapter;
import android.provider.SearchIndexableResource;

import com.android.settings.testutils.shadow.ShadowNfcAdapter;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -32,16 +35,20 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;

import java.util.List;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowNfcAdapter.class)
public class NfcAndPaymentFragmentTest {
    @Mock
    private PackageManager mPackageManager;

    private NfcAndPaymentFragment mFragment;
    private Context mContext;

    @Mock
    private NfcAdapter mNfcAdapter;
    private ShadowNfcAdapter mShadowNfcAdapter;

    @Before
    public void setUp() {
@@ -49,6 +56,9 @@ public class NfcAndPaymentFragmentTest {

        mFragment = new NfcAndPaymentFragment();
        mContext = spy(RuntimeEnvironment.application);
        mShadowNfcAdapter = Shadow.extract(NfcAdapter.getDefaultAdapter(mContext));

        when(mContext.getPackageManager()).thenReturn(mPackageManager);
    }

    @Test
@@ -64,8 +74,10 @@ public class NfcAndPaymentFragmentTest {
    @Test
    public void searchIndexProvider_shouldIndexValidItems() {
        when(mContext.getApplicationContext()).thenReturn(mContext);
        when(NfcAdapter.getDefaultAdapter(mContext)).thenReturn(mNfcAdapter);
        when(mNfcAdapter.isSecureNfcSupported()).thenReturn(true);
        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(true);
        when(mPackageManager.hasSystemFeature(
                PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)).thenReturn(true);
        mShadowNfcAdapter.setSecureNfcSupported(true);

        final List<String> niks = NfcAndPaymentFragment.SEARCH_INDEX_DATA_PROVIDER
                .getNonIndexableKeys(mContext);
+16 −13
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.provider.Settings;

import androidx.preference.PreferenceScreen;

import com.android.settings.testutils.shadow.ShadowNfcAdapter;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;

@@ -41,19 +42,20 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.util.ReflectionHelpers;

import java.util.ArrayList;
import java.util.List;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowNfcAdapter.class)
public class AndroidBeamPreferenceControllerTest {

    Context mContext;
    @Mock
    private NfcAdapter mNfcAdapter;
    @Mock
    NfcManager mManager;
    NfcManager mNfcManager;
    @Mock
    private UserManager mUserManager;
    @Mock
@@ -63,18 +65,19 @@ public class AndroidBeamPreferenceControllerTest {

    private RestrictedPreference mAndroidBeamPreference;
    private AndroidBeamPreferenceController mAndroidBeamController;
    private ShadowNfcAdapter mShadowNfcAdapter;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        mShadowNfcAdapter = Shadow.extract(NfcAdapter.getDefaultAdapter(mContext));

        when(mContext.getApplicationContext()).thenReturn(mContext);
        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
        when(mContext.getSystemService(Context.NFC_SERVICE)).thenReturn(mManager);
        when(mContext.getSystemService(Context.NFC_SERVICE)).thenReturn(mNfcManager);
        when(RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext,
                UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId())).thenReturn(false);
        when(NfcAdapter.getDefaultAdapter(mContext)).thenReturn(mNfcAdapter);

        mAndroidBeamController = new AndroidBeamPreferenceController(mContext,
                AndroidBeamPreferenceController.KEY_ANDROID_BEAM_SETTINGS);
@@ -95,13 +98,13 @@ public class AndroidBeamPreferenceControllerTest {

    @Test
    public void isAvailable_hasNfc_shouldReturnTrue() {
        when(mNfcAdapter.isEnabled()).thenReturn(true);
        mShadowNfcAdapter.setEnabled(true);
        assertThat(mAndroidBeamController.isAvailable()).isTrue();
    }

    @Test
    public void isAvailable_noNfcFeature_shouldReturnFalse() {
        when(mNfcAdapter.isEnabled()).thenReturn(true);
        mShadowNfcAdapter.setEnabled(true);
        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)).thenReturn(false);
        assertThat(mAndroidBeamController.isAvailable()).isFalse();
    }
@@ -114,7 +117,7 @@ public class AndroidBeamPreferenceControllerTest {

    @Test
    public void isBeamEnable_disAllowBeam_shouldReturnFalse() {
        when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_OFF);
        mShadowNfcAdapter.setAdapterState(NfcAdapter.STATE_OFF);

        when(RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext,
                UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId())).thenReturn(true);
@@ -125,7 +128,7 @@ public class AndroidBeamPreferenceControllerTest {

    @Test
    public void isBeamEnable_nfcStateOn_shouldReturnTrue() {
        when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_ON);
        mShadowNfcAdapter.setAdapterState(NfcAdapter.STATE_ON);
        try {
            mAndroidBeamController.onResume();
        } catch (NullPointerException e) {
@@ -137,22 +140,22 @@ public class AndroidBeamPreferenceControllerTest {

    @Test
    public void isBeamEnable_nfcStateNotOn_shouldReturnFalse() {
        when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_OFF);
        mShadowNfcAdapter.setAdapterState(NfcAdapter.STATE_OFF);
        mAndroidBeamController.onResume();
        assertThat(mAndroidBeamPreference.isEnabled()).isFalse();

        when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_TURNING_ON);
        mShadowNfcAdapter.setAdapterState(NfcAdapter.STATE_TURNING_ON);
        mAndroidBeamController.onResume();
        assertThat(mAndroidBeamPreference.isEnabled()).isFalse();

        when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_TURNING_OFF);
        mShadowNfcAdapter.setAdapterState(NfcAdapter.STATE_TURNING_OFF);
        mAndroidBeamController.onResume();
        assertThat(mAndroidBeamPreference.isEnabled()).isFalse();
    }

    @Test
    public void updateNonIndexableKeys_available_shouldNotUpdate() {
        when(mNfcAdapter.isEnabled()).thenReturn(true);
        mShadowNfcAdapter.setEnabled(true);
        final List<String> keys = new ArrayList<>();

        mAndroidBeamController.updateNonIndexableKeys(keys);
Loading