Merge "Add unit test in WifiDppConfiguratorActivity" into main
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 4d723dc1..34c8602 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 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 @@
 
     @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 @@
 
         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;
+    }
 }