Add logic to redirect default payment setting
to default wallet selector. Bug: 283989236 Bug: 313968146 Test: Manual Change-Id: I984497baa1689d1b31eedd6a4f9ab453b10dd93c
This commit is contained in:
@@ -19,16 +19,28 @@ package com.android.settings.applications.specialaccess;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.role.RoleManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.nfc.NfcAdapter;
|
||||
import android.nfc.cardemulation.CardEmulation;
|
||||
import android.os.UserManager;
|
||||
import android.permission.flags.Flags;
|
||||
import android.platform.test.annotations.RequiresFlagsEnabled;
|
||||
import android.platform.test.flag.junit.CheckFlagsRule;
|
||||
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
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;
|
||||
@@ -37,6 +49,10 @@ import org.robolectric.util.ReflectionHelpers;
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class DefaultPaymentSettingsPreferenceControllerTest {
|
||||
|
||||
private static final String PREF_KEY = "key";
|
||||
|
||||
@Rule
|
||||
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
|
||||
@Mock
|
||||
private NfcAdapter mNfcAdapter;
|
||||
@Mock
|
||||
@@ -45,6 +61,10 @@ public class DefaultPaymentSettingsPreferenceControllerTest {
|
||||
private UserManager mUserManager;
|
||||
@Mock
|
||||
private PackageManager mPackageManager;
|
||||
@Mock
|
||||
private RoleManager mRoleManager;
|
||||
@Mock
|
||||
private Preference mPreference;
|
||||
|
||||
private DefaultPaymentSettingsPreferenceController mController;
|
||||
|
||||
@@ -55,7 +75,8 @@ public class DefaultPaymentSettingsPreferenceControllerTest {
|
||||
when(mContext.getApplicationContext()).thenReturn(mContext);
|
||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||
mController = new DefaultPaymentSettingsPreferenceController(mContext, "key");
|
||||
when(mContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager);
|
||||
mController = new DefaultPaymentSettingsPreferenceController(mContext, PREF_KEY);
|
||||
ReflectionHelpers.setField(mController, "mNfcAdapter", mNfcAdapter);
|
||||
}
|
||||
|
||||
@@ -86,4 +107,20 @@ public class DefaultPaymentSettingsPreferenceControllerTest {
|
||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||
DefaultPaymentSettingsPreferenceController.DISABLED_DEPENDENT_SETTING);
|
||||
}
|
||||
|
||||
@Test
|
||||
@RequiresFlagsEnabled(Flags.FLAG_WALLET_ROLE_ENABLED)
|
||||
public void handlePreferenceTreeClick_walletRoleEnabled_shouldReturnTrue() {
|
||||
when(mRoleManager.isRoleAvailable(anyString())).thenReturn(true);
|
||||
when(mPreference.getKey()).thenReturn(PREF_KEY);
|
||||
ArgumentCaptor<String> roleTypeCaptor = ArgumentCaptor.forClass(String.class);
|
||||
ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
|
||||
assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
|
||||
verify(mRoleManager).isRoleAvailable(roleTypeCaptor.capture());
|
||||
verify(mContext).startActivity(intentArgumentCaptor.capture());
|
||||
assertThat(roleTypeCaptor.getValue()).isEqualTo(RoleManager.ROLE_WALLET);
|
||||
assertThat(intentArgumentCaptor.getValue().getAction())
|
||||
.isEqualTo(CardEmulation.ACTION_CHANGE_DEFAULT);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user