Merge "[Provider Model] The SIMs page should list all p-SIMs" into sc-qpr1-dev am: 39b6769e5e

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15834629

Change-Id: I80712b16464d2104e570038060044bde74c9c4fb
This commit is contained in:
Zoey Chen
2021-09-22 06:07:00 +00:00
committed by Automerger Merge Worker
7 changed files with 189 additions and 72 deletions

View File

@@ -26,9 +26,12 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Looper;
import android.telephony.SubscriptionInfo;
import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
@@ -41,38 +44,39 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
@RunWith(AndroidJUnit4.class)
public class NetworkProviderDownloadedSimsCategoryControllerTest {
private static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
"provider_model_downloaded_sim_category";
private static final String KEY_ADD_MORE = "add_more";
private static final String SUB_1 = "SUB_1";
private static final String SUB_2 = "SUB_2";
private static final int SUB_ID_1 = 1;
private static final int SUB_ID_2 = 2;
@Mock
private NetworkProviderDownloadedSimListController mNetworkProviderDownloadedSimListController;
@Mock
private PreferenceCategory mPreferenceCategory;
@Mock
private Lifecycle mLifecycle;
@Mock
private SubscriptionInfo mSubscriptionInfo1;
@Mock
private SubscriptionInfo mSubscriptionInfo2;
private Context mContext;
private NetworkProviderDownloadedSimsCategoryController mCategoryController;
private PreferenceCategory mPreferenceCategory;
private PreferenceManager mPreferenceManager;
private PreferenceScreen mPreferenceScreen;
private Preference mAddMorePreference;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
mCategoryController = new NetworkProviderDownloadedSimsCategoryController(
mContext, KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM) {
@Override
protected NetworkProviderDownloadedSimListController createDownloadedSimListController(
Lifecycle lifecycle) {
return mNetworkProviderDownloadedSimListController;
}
};
if (Looper.myLooper() == null) {
Looper.prepare();
@@ -80,14 +84,21 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
mPreferenceManager = new PreferenceManager(mContext);
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
when(mPreferenceCategory.getKey()).thenReturn(KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
when(mPreferenceCategory.getPreferenceCount()).thenReturn(1);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
mAddMorePreference = new Preference(mContext);
mAddMorePreference.setKey(KEY_ADD_MORE);
mAddMorePreference.setVisible(true);
mPreferenceScreen.addPreference(mPreferenceCategory);
mPreferenceScreen.addPreference(mAddMorePreference);
mCategoryController = new NetworkProviderDownloadedSimsCategoryController(mContext,
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, mLifecycle);
}
@Test
public void getAvailabilityStatus_returnUnavailable() {
mNetworkProviderDownloadedSimListController = null;
SubscriptionUtil.setAvailableSubscriptionsForTesting(new ArrayList<>());
assertThat(mCategoryController.getAvailabilityStatus()).isEqualTo(
CONDITIONALLY_UNAVAILABLE);
@@ -95,10 +106,46 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
@Test
public void displayPreference_isVisible() {
when(mNetworkProviderDownloadedSimListController.isAvailable()).thenReturn(true);
mCategoryController.init(mLifecycle);
setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscriptionInfo1));
mCategoryController.displayPreference(mPreferenceScreen);
assertEquals(mPreferenceCategory.isVisible(), true);
}
@Test
public void updateState_setTitle_withTwoDownloadedSims_returnDownloadedSims() {
setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
setUpSubscriptionInfoForDownloadedSim(SUB_ID_2, SUB_2, mSubscriptionInfo2);
SubscriptionUtil.setAvailableSubscriptionsForTesting(
Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2));
mCategoryController.displayPreference(mPreferenceScreen);
mCategoryController.updateState(mPreferenceCategory);
assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
assertThat(mPreferenceCategory.getTitle()).isEqualTo(
ResourcesUtils.getResourcesString(mContext, "downloaded_sims_category_title"));
}
@Test
public void updateState_setTitle_withOneDownloadedSim_returnDownloadedSim() {
setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscriptionInfo1));
mCategoryController.displayPreference(mPreferenceScreen);
mCategoryController.updateState(mPreferenceCategory);
assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
assertThat(mPreferenceCategory.getTitle()).isEqualTo(
ResourcesUtils.getResourcesString(mContext, "downloaded_sim_category_title"));
}
private void setUpSubscriptionInfoForDownloadedSim(int subId, String displayName,
SubscriptionInfo subscriptionInfo) {
when(subscriptionInfo.isEmbedded()).thenReturn(true);
when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
}
}

View File

@@ -16,10 +16,14 @@
package com.android.settings.network;
import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
import static com.google.common.truth.Truth.assertThat;
import static androidx.lifecycle.Lifecycle.Event;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -170,7 +174,6 @@ public class NetworkProviderSimListControllerTest {
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID_1, DISPLAY_NAME_1), summary));
}
@Test
@UiThreadTest
public void getSummary_inactivePSim() {
@@ -227,4 +230,18 @@ public class NetworkProviderSimListControllerTest {
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID_1, DISPLAY_NAME_1), summary));
}
@Test
@UiThreadTest
public void getAvailablePhysicalSubscription_withTwoPhysicalSims_returnTwo() {
final SubscriptionInfo info1 = mock(SubscriptionInfo.class);
when(info1.isEmbedded()).thenReturn(false);
final SubscriptionInfo info2 = mock(SubscriptionInfo.class);
when(info2.isEmbedded()).thenReturn(false);
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(
Arrays.asList(info1, info2));
displayPreferenceWithLifecycle();
assertThat(mController.getAvailablePhysicalSubscription().size()).isEqualTo(2);
}
}

View File

@@ -17,6 +17,7 @@
package com.android.settings.network;
import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
@@ -25,7 +26,10 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Looper;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import androidx.preference.PreferenceCategory;
@@ -40,37 +44,35 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
@RunWith(AndroidJUnit4.class)
public class NetworkProviderSimsCategoryControllerTest {
private static final String KEY_PREFERENCE_CATEGORY_SIM = "provider_model_sim_category";
private static final String SUB_1 = "SUB_1";
private static final String SUB_2 = "SUB_2";
private static final int SUB_ID_1 = 1;
private static final int SUB_ID_2 = 2;
@Mock
private NetworkProviderSimListController mNetworkProviderSimListController;
@Mock
private PreferenceCategory mPreferenceCategory;
@Mock
private Lifecycle mLifecycle;
@Mock
private SubscriptionInfo mSubscriptionInfo1;
@Mock
private SubscriptionInfo mSubscriptionInfo2;
private Context mContext;
private NetworkProviderSimsCategoryController mCategoryController;
private PreferenceManager mPreferenceManager;
private PreferenceScreen mPreferenceScreen;
private PreferenceCategory mPreferenceCategory;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
mCategoryController = new NetworkProviderSimsCategoryController(
mContext, KEY_PREFERENCE_CATEGORY_SIM) {
@Override
protected NetworkProviderSimListController createSimListController(
Lifecycle lifecycle) {
return mNetworkProviderSimListController;
}
};
if (Looper.myLooper() == null) {
Looper.prepare();
@@ -78,14 +80,17 @@ public class NetworkProviderSimsCategoryControllerTest {
mPreferenceManager = new PreferenceManager(mContext);
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
when(mPreferenceCategory.getKey()).thenReturn(KEY_PREFERENCE_CATEGORY_SIM);
when(mPreferenceCategory.getPreferenceCount()).thenReturn(1);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_PREFERENCE_CATEGORY_SIM);
mPreferenceScreen.addPreference(mPreferenceCategory);
mCategoryController = new NetworkProviderSimsCategoryController(
mContext, KEY_PREFERENCE_CATEGORY_SIM, mLifecycle);
}
@Test
public void getAvailabilityStatus_returnUnavailable() {
mNetworkProviderSimListController = null;
SubscriptionUtil.setAvailableSubscriptionsForTesting(new ArrayList<>());
assertThat(mCategoryController.getAvailabilityStatus()).isEqualTo(
CONDITIONALLY_UNAVAILABLE);
@@ -93,10 +98,46 @@ public class NetworkProviderSimsCategoryControllerTest {
@Test
public void displayPreference_isVisible() {
when(mNetworkProviderSimListController.isAvailable()).thenReturn(true);
mCategoryController.init(mLifecycle);
setUpSubscriptionInfoForPhysicalSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscriptionInfo1));
mCategoryController.displayPreference(mPreferenceScreen);
assertEquals(mPreferenceCategory.isVisible(), true);
}
@Test
public void updateState_setTitle_withTwoPhysicalSims_returnSims() {
setUpSubscriptionInfoForPhysicalSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
setUpSubscriptionInfoForPhysicalSim(SUB_ID_2, SUB_2, mSubscriptionInfo2);
SubscriptionUtil.setAvailableSubscriptionsForTesting(
Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2));
mCategoryController.displayPreference(mPreferenceScreen);
mCategoryController.updateState(mPreferenceCategory);
assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
assertThat(mPreferenceCategory.getTitle()).isEqualTo(
ResourcesUtils.getResourcesString(mContext, "provider_network_settings_title"));
}
@Test
public void updateState_setTitle_withOnePhysicalSim_returnSim() {
setUpSubscriptionInfoForPhysicalSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscriptionInfo1));
mCategoryController.displayPreference(mPreferenceScreen);
mCategoryController.updateState(mPreferenceCategory);
assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
assertThat(mPreferenceCategory.getTitle()).isEqualTo(
ResourcesUtils.getResourcesString(mContext, "sim_category_title"));
}
private void setUpSubscriptionInfoForPhysicalSim(int subId, String displayName,
SubscriptionInfo subscriptionInfo) {
when(subscriptionInfo.isEmbedded()).thenReturn(false);
when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
}
}