From ae6628bd02d68ff31480559a992dd5fa8a8bfefa Mon Sep 17 00:00:00 2001 From: govenliu Date: Tue, 26 May 2020 20:50:58 +0800 Subject: [PATCH] [Wi-Fi] Enhance NetworkRequestDialogActivityTest unit test cases Add new unit test cases in NetworkRequestDialogActivityTest.java The coverage rate of NetworkRequestDialogActivity will raise from 48% to 91% Bug: 151696220 Test: make RunSettingsRoboTests ROBOTEST_FILTER=NetworkRequestDialogActivityTest Change-Id: I6530815ded8d21d01d5da1d7ee5f38ef190d3863 --- .../wifi/NetworkRequestDialogActivity.java | 5 +- .../NetworkRequestDialogActivityTest.java | 104 ++++++++++++++++++ 2 files changed, 107 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/wifi/NetworkRequestDialogActivity.java b/src/com/android/settings/wifi/NetworkRequestDialogActivity.java index 49e167e77ff..fb1b87be08d 100644 --- a/src/com/android/settings/wifi/NetworkRequestDialogActivity.java +++ b/src/com/android/settings/wifi/NetworkRequestDialogActivity.java @@ -31,6 +31,7 @@ import android.os.Message; import android.widget.Toast; import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentActivity; import com.android.settings.R; @@ -57,12 +58,12 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements final static String EXTRA_IS_SPECIFIED_SSID = "com.android.settings.wifi.extra.REQUEST_IS_FOR_SINGLE_NETWORK"; - private NetworkRequestDialogBaseFragment mDialogFragment; + @VisibleForTesting NetworkRequestDialogBaseFragment mDialogFragment; private NetworkRequestUserSelectionCallback mUserSelectionCallback; private boolean mIsSpecifiedSsid; private boolean mShowingErrorDialog; private WifiConfiguration mMatchedConfig; - private ProgressDialog mProgressDialog; + @VisibleForTesting ProgressDialog mProgressDialog; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java index c74464782b6..9f6e7a3ed1e 100644 --- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java +++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java @@ -25,8 +25,11 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.content.Intent; +import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; +import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback; import android.os.Bundle; import androidx.annotation.Nullable; @@ -40,22 +43,31 @@ import com.android.settingslib.wifi.WifiTrackerFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowLooper; +import java.util.ArrayList; +import java.util.List; + @RunWith(RobolectricTestRunner.class) @Config(shadows = ShadowAlertDialogCompat.class) public class NetworkRequestDialogActivityTest { + private static final String TEST_SSID = "testssid"; + private static final String TEST_CAPABILITY = "wep"; + NetworkRequestDialogActivity mActivity; WifiManager mWifiManager; Context mContext; @Before public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); WifiTracker wifiTracker = mock(WifiTracker.class); @@ -118,6 +130,15 @@ public class NetworkRequestDialogActivityTest { } } + private void startSpecifiedActivity() { + final Intent intent = new Intent().setClassName( + RuntimeEnvironment.application.getPackageName(), + NetworkRequestDialogActivity.class.getName()); + intent.putExtra(NetworkRequestDialogActivity.EXTRA_IS_SPECIFIED_SSID, true); + mActivity = spy(Robolectric.buildActivity(NetworkRequestDialogActivity.class, + intent).create().get()); + } + @Test public void updateAccessPointList_onUserSelectionConnectSuccess_shouldFinishActivity() { final WifiConfiguration config = new WifiConfiguration(); @@ -126,4 +147,87 @@ public class NetworkRequestDialogActivityTest { verify(mActivity).finish(); } + + @Test + public void specifiedSsid_onCreate_shouldShowProgressDialog() { + startSpecifiedActivity(); + + assertThat(mActivity.mProgressDialog).isNotNull(); + assertThat(mActivity.mProgressDialog.isShowing()).isTrue(); + } + + private ScanResult getScanResult(String ssid, String capability) { + final ScanResult scanResult = mock(ScanResult.class); + scanResult.SSID = ssid; + scanResult.capabilities = capability; + + return scanResult; + } + + @Test + public void specifiedSsid_onMatch_shouldShowDialogFragment() { + startSpecifiedActivity(); + + final List scanResults = new ArrayList<>(); + scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); + + mActivity.onMatch(scanResults); + + assertThat(mActivity.mProgressDialog).isNull(); + assertThat(mActivity.mDialogFragment).isNotNull(); + } + + @Test + public void onAbort_withFakeActivity_callStopAndPopShouldBeTrue() { + final FakeNetworkRequestDialogActivity fakeActivity = + Robolectric.setupActivity(FakeNetworkRequestDialogActivity.class); + + fakeActivity.onResume(); + fakeActivity.onAbort(); + + assertThat(fakeActivity.bCalledStopAndPop).isTrue(); + } + + @Test + public void onUserSelectionConnectFailure_shouldShowDialogFragment() { + WifiConfiguration wifiConfiguration = mock(WifiConfiguration.class); + startSpecifiedActivity(); + final List scanResults = new ArrayList<>(); + scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); + mActivity.onMatch(scanResults); + + mActivity.onUserSelectionConnectFailure(wifiConfiguration); + + assertThat(mActivity.mProgressDialog).isNull(); + assertThat(mActivity.mDialogFragment).isNotNull(); + } + + @Test + public void onClickConnectButton_shouldShowProgressDialog() { + NetworkRequestUserSelectionCallback networkRequestUserSelectionCallback = mock( + NetworkRequestUserSelectionCallback.class); + startSpecifiedActivity(); + final List scanResults = new ArrayList<>(); + scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); + mActivity.onMatch(scanResults); + mActivity.onUserSelectionCallbackRegistration(networkRequestUserSelectionCallback); + + mActivity.onClickConnectButton(); + + assertThat(mActivity.mProgressDialog.isShowing()).isTrue(); + assertThat(mActivity.mDialogFragment).isNull(); + } + + @Test + public void onCancel_shouldCloseAllUI() { + startSpecifiedActivity(); + final List scanResults = new ArrayList<>(); + scanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY)); + mActivity.onMatch(scanResults); + + mActivity.onCancel(); + + assertThat(mActivity.mProgressDialog).isNull(); + assertThat(mActivity.mDialogFragment).isNull(); + } }