From 184bca9c16ba591dc552696d553c051ccdd37c39 Mon Sep 17 00:00:00 2001 From: Kai Zhou Date: Sun, 28 Jul 2024 12:04:41 +0000 Subject: [PATCH] Add unit test in WifiDppConfiguratorActivity * Bug: b/349252886 * Settings Intake: b/329012096 Test: atest tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java Flag: com.android.settings.flags.enable_wifi_sharing_runtime_fragment Change-Id: I951ed57acd40505c1ccecdb8420d197f7edd42f7 --- .../dpp/WifiDppConfiguratorActivityTest.java | 71 ++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java index 4d723dc1846..34c86024739 100644 --- a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java +++ b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java @@ -20,15 +20,33 @@ import static android.os.UserManager.DISALLOW_ADD_WIFI_CONFIG; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.when; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.mock; import android.content.Context; +import android.content.Intent; import android.os.UserManager; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; +import android.platform.test.flag.junit.SetFlagsRule; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import androidx.test.annotation.UiThreadTest; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.flags.Flags; +import com.android.settings.testutils.FakeFeatureFactory; +import com.android.settings.wifi.factory.WifiFeatureProvider; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -44,18 +62,36 @@ public class WifiDppConfiguratorActivityTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + @Rule + public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + @Spy private final Context mContext = ApplicationProvider.getApplicationContext(); @Mock private UserManager mUserManager; + @Mock + private FragmentManager mFragmentManager; + // Mock, created by FakeFeatureFactory + private WifiFeatureProvider mWifiFeatureProviderMock; + + @Spy private WifiDppConfiguratorActivity mActivity; @Before public void setUp() { when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); - mActivity = new WifiDppConfiguratorActivity(); + mActivity.mFragmentManager = mFragmentManager; + doReturn(mContext).when(mActivity).getApplicationContext(); + + FragmentTransaction mockTransaction = mock(FragmentTransaction.class); + when(mFragmentManager.beginTransaction()).thenReturn(mockTransaction); + when(mockTransaction.replace(anyInt(), any(Fragment.class), anyString())) + .thenReturn(mockTransaction); + + FakeFeatureFactory featureFactory = FakeFeatureFactory.setupForTest(); + mWifiFeatureProviderMock = featureFactory.mWifiFeatureProvider; } @Test @@ -71,4 +107,37 @@ public class WifiDppConfiguratorActivityTest { assertThat(mActivity.isAddWifiConfigAllowed(mContext)).isFalse(); } + + + @Test + @EnableFlags(Flags.FLAG_ENABLE_WIFI_SHARING_RUNTIME_FRAGMENT) + public void showQrCodeGeneratorFragment_shouldUseFeatureFactory() { + when(mUserManager.isGuestUser()).thenReturn(false); + when(mWifiFeatureProviderMock.getWifiDppQrCodeGeneratorFragment()) + .thenReturn(new WifiDppQrCodeGeneratorFragment()); + + mActivity.handleIntent(createQrCodeGeneratorIntent()); + + verify(mWifiFeatureProviderMock).getWifiDppQrCodeGeneratorFragment(); + } + + @Test + @DisableFlags(Flags.FLAG_ENABLE_WIFI_SHARING_RUNTIME_FRAGMENT) + public void showQrCodeGeneratorFragment_shouldNotUseFeatureFactory() { + when(mUserManager.isGuestUser()).thenReturn(false); + + mActivity.handleIntent(createQrCodeGeneratorIntent()); + + verify(mWifiFeatureProviderMock, never()) + .getWifiDppQrCodeGeneratorFragment(); + } + + private static Intent createQrCodeGeneratorIntent() { + Intent intent = new Intent( + WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR); + intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest"); + intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WPA"); + intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "\\012345678,"); + return intent; + } }