Migrate PaymentSettings to DashboardFragment

- Move preference related logic to controllers.
- Add some test cases for controllers.

Test: manual
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.nfc
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.core
      atest SettingsGatewayTest UniquePreferenceTest
Change-Id: I061a194c170f63fab51974f26c24be43d67d6f6f
This commit is contained in:
chiujason
2018-04-12 15:52:00 +08:00
committed by Fan Zhang
parent 8efbe6e255
commit ff244c0e40
14 changed files with 833 additions and 407 deletions

View File

@@ -18,6 +18,7 @@
package com.android.settings.nfc;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
@@ -30,42 +31,66 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import java.util.ArrayList;
import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = PaymentSettingsTest.ShadowPaymentBackend.class)
public class PaymentSettingsTest {
@Mock
Context mContext;
static final String PAYMENT_KEY = "nfc_payment";
static final String FOREGROUND_KEY = "nfc_foreground";
private Context mContext;
@Mock
private PackageManager mManager;
private PaymentSettings mFragment;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mFragment = new PaymentSettings();
mContext = spy(RuntimeEnvironment.application);
when(mContext.getPackageManager()).thenReturn(mManager);
}
@Test
public void testNonIndexableKey_NoNFC_KeyAdded() {
public void getNonIndexableKey_NoNFC_AllKeysAdded() {
when(mManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(false);
final List<String> niks =
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
assertThat(niks).contains(PaymentSettings.PAYMENT_KEY);
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
assertThat(niks).contains(PAYMENT_KEY);
assertThat(niks).contains(FOREGROUND_KEY);
}
@Test
public void testNonIndexableKey_NFC_NoKeyAdded() {
public void getNonIndexableKey_NFC_ForegroundKeyAdded() {
when(mManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(true);
final List<String> niks =
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
assertThat(niks).isEmpty();
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
assertThat(niks).contains(FOREGROUND_KEY);
}
@Implements(PaymentBackend.class)
public static class ShadowPaymentBackend {
private ArrayList<PaymentBackend.PaymentAppInfo> mAppInfos;
public void __constructor__(Context context) {
mAppInfos = new ArrayList<>();
mAppInfos.add(new PaymentBackend.PaymentAppInfo());
}
@Implementation
public List<PaymentBackend.PaymentAppInfo> getPaymentAppInfos() {
return mAppInfos;
}
}
}