[Settings] Apply ImsQueryProvisioningStat to WFC
1. Code refactor 2. Apply ImsQueryProvisioningStat class to WFC's use case Bug: 140542283 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingPreferenceControllerTest Change-Id: I8a09264f83b9fc4fce3f79ec3aeb6ae757b004e4
This commit is contained in:
@@ -18,13 +18,13 @@ package com.android.settings.wifi.calling;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
@@ -32,14 +32,19 @@ import android.view.View;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.android.ims.ImsManager;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.SubscriptionUtil;
|
||||
import com.android.settings.network.ims.MockWifiCallingQueryImsState;
|
||||
import com.android.settings.widget.RtlCompatibleViewPager;
|
||||
|
||||
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.shadows.androidx.fragment.FragmentController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -48,12 +53,38 @@ import java.util.Collections;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class WifiCallingSettingsTest {
|
||||
private static final int SUB_ID1 = 111;
|
||||
private static final int SUB_ID2 = 222;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
@Mock
|
||||
private ImsManager mImsManager;
|
||||
|
||||
private WifiCallingSettings mFragment;
|
||||
|
||||
private MockWifiCallingQueryImsState mQueryImsState1;
|
||||
private MockWifiCallingQueryImsState mQueryImsState2;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
|
||||
mQueryImsState1 = spy(new MockWifiCallingQueryImsState(mContext, SUB_ID1));
|
||||
mQueryImsState2 = spy(new MockWifiCallingQueryImsState(mContext, SUB_ID2));
|
||||
doReturn(true).when(mQueryImsState1).isEnabledByUser();
|
||||
doReturn(true).when(mQueryImsState2).isEnabledByUser();
|
||||
doReturn(mImsManager).when(mQueryImsState1).getImsManager(anyInt());
|
||||
doReturn(mImsManager).when(mQueryImsState2).getImsManager(anyInt());
|
||||
doReturn(true).when(mImsManager).isWfcEnabledByPlatform();
|
||||
mQueryImsState1.setIsProvisionedOnDevice(true);
|
||||
mQueryImsState2.setIsProvisionedOnDevice(true);
|
||||
|
||||
mFragment = spy(new WifiCallingSettings());
|
||||
doReturn(mQueryImsState1).when(mFragment).queryImsState(SUB_ID1);
|
||||
doReturn(mQueryImsState2).when(mFragment).queryImsState(SUB_ID2);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -65,12 +96,12 @@ public class WifiCallingSettingsTest {
|
||||
@Test
|
||||
public void setupFragment_oneSubscription_noCrash() {
|
||||
final SubscriptionInfo info = mock(SubscriptionInfo.class);
|
||||
when(info.getSubscriptionId()).thenReturn(111);
|
||||
when(info.getSubscriptionId()).thenReturn(SUB_ID1);
|
||||
|
||||
SubscriptionUtil.setActiveSubscriptionsForTesting(new ArrayList<>(
|
||||
Collections.singletonList(info)));
|
||||
doReturn(true).when(mFragment).isWfcEnabledByPlatform(any(SubscriptionInfo.class));
|
||||
doReturn(true).when(mFragment).isWfcProvisionedOnDevice(any(SubscriptionInfo.class));
|
||||
doReturn(true).when(mImsManager).isWfcEnabledByPlatform();
|
||||
mQueryImsState1.setIsProvisionedOnDevice(true);
|
||||
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
|
||||
@@ -88,13 +119,11 @@ public class WifiCallingSettingsTest {
|
||||
public void setupFragment_twoSubscriptions_correctSelection() {
|
||||
final SubscriptionInfo info1 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo info2 = mock(SubscriptionInfo.class);
|
||||
when(info1.getSubscriptionId()).thenReturn(111);
|
||||
when(info2.getSubscriptionId()).thenReturn(222);
|
||||
when(info1.getSubscriptionId()).thenReturn(SUB_ID1);
|
||||
when(info2.getSubscriptionId()).thenReturn(SUB_ID2);
|
||||
|
||||
SubscriptionUtil.setActiveSubscriptionsForTesting(new ArrayList<>(
|
||||
Arrays.asList(info1, info2)));
|
||||
doReturn(true).when(mFragment).isWfcEnabledByPlatform(any(SubscriptionInfo.class));
|
||||
doReturn(true).when(mFragment).isWfcProvisionedOnDevice(any(SubscriptionInfo.class));
|
||||
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(Settings.EXTRA_SUB_ID, info2.getSubscriptionId());
|
||||
@@ -114,14 +143,12 @@ public class WifiCallingSettingsTest {
|
||||
public void setupFragment_twoSubscriptionsOneNotProvisionedOnDevice_oneResult() {
|
||||
final SubscriptionInfo info1 = mock(SubscriptionInfo.class);
|
||||
final SubscriptionInfo info2 = mock(SubscriptionInfo.class);
|
||||
when(info1.getSubscriptionId()).thenReturn(111);
|
||||
when(info2.getSubscriptionId()).thenReturn(222);
|
||||
when(info1.getSubscriptionId()).thenReturn(SUB_ID1);
|
||||
when(info2.getSubscriptionId()).thenReturn(SUB_ID2);
|
||||
|
||||
SubscriptionUtil.setActiveSubscriptionsForTesting(new ArrayList<>(
|
||||
Arrays.asList(info1, info2)));
|
||||
doReturn(true).when(mFragment).isWfcEnabledByPlatform(any(SubscriptionInfo.class));
|
||||
doReturn(true).when(mFragment).isWfcProvisionedOnDevice(eq(info1));
|
||||
doReturn(false).when(mFragment).isWfcProvisionedOnDevice(eq(info2));
|
||||
mQueryImsState2.setIsProvisionedOnDevice(false);
|
||||
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(Settings.EXTRA_SUB_ID, info1.getSubscriptionId());
|
||||
|
Reference in New Issue
Block a user