Merge "PrivateVolumeOptionMenuControllerTest converted to JUnit"

This commit is contained in:
Jeremy Goldman
2021-02-25 05:43:56 +00:00
committed by Android (Google) Code Review

View File

@@ -18,30 +18,35 @@ package com.android.settings.deviceinfo;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.app.Activity; import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.storage.VolumeInfo; import android.os.storage.VolumeInfo;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import com.android.settings.R; import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.testutils.ResourcesUtils;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers; import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.ShadowApplication;
@RunWith(RobolectricTestRunner.class) @RunWith(AndroidJUnit4.class)
public class PrivateVolumeOptionMenuControllerTest { public class PrivateVolumeOptionMenuControllerTest {
@Mock @Mock
@@ -57,11 +62,13 @@ public class PrivateVolumeOptionMenuControllerTest {
@Mock @Mock
private VolumeInfo mPrimaryInfo; private VolumeInfo mPrimaryInfo;
private Context mContext;
private PrivateVolumeOptionMenuController mController; private PrivateVolumeOptionMenuController mController;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
when(mVolumeInfo.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE); when(mVolumeInfo.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE);
when(mVolumeInfo.isMountedWritable()).thenReturn(true); when(mVolumeInfo.isMountedWritable()).thenReturn(true);
@@ -69,15 +76,15 @@ public class PrivateVolumeOptionMenuControllerTest {
when(mMenu.findItem(anyInt())).thenReturn(mMigrateMenuItem); when(mMenu.findItem(anyInt())).thenReturn(mMigrateMenuItem);
when(mMigrateMenuItem.getItemId()).thenReturn(100); when(mMigrateMenuItem.getItemId()).thenReturn(100);
mController = new PrivateVolumeOptionMenuController( mController = new PrivateVolumeOptionMenuController(mContext, mPrimaryInfo, mPm);
Robolectric.setupActivity(Activity.class), mPrimaryInfo, mPm);
} }
@Test @Test
public void testMigrateDataMenuItemIsAdded() { public void testMigrateDataMenuItemIsAdded() {
mController.onCreateOptionsMenu(mMenu, mMenuInflater); mController.onCreateOptionsMenu(mMenu, mMenuInflater);
verify(mMenu).add(Menu.NONE, 100, Menu.NONE, R.string.storage_menu_migrate); verify(mMenu).add(Menu.NONE, 100, Menu.NONE, ResourcesUtils.getResourcesId(
mContext, "string", "storage_menu_migrate"));
} }
@Test @Test
@@ -115,14 +122,18 @@ public class PrivateVolumeOptionMenuControllerTest {
@Test @Test
public void testMigrateDataGoesToMigrateWizard() { public void testMigrateDataGoesToMigrateWizard() {
when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mVolumeInfo); when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mVolumeInfo);
doNothing().when(mContext).startActivity(any(Intent.class));
mController.onCreateOptionsMenu(mMenu, mMenuInflater); mController.onCreateOptionsMenu(mMenu, mMenuInflater);
mController.onPrepareOptionsMenu(mMenu); mController.onPrepareOptionsMenu(mMenu);
assertThat(mController.onOptionsItemSelected(mMigrateMenuItem)).isTrue(); assertThat(mController.onOptionsItemSelected(mMigrateMenuItem)).isTrue();
ShadowApplication shadowApplication = ShadowApplication.getInstance();
assertThat(shadowApplication).isNotNull(); final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
assertThat(shadowApplication.getNextStartedActivity().getComponent().getClassName()) Intent.class);
verify(mContext).startActivity(intentCaptor.capture());
final Intent startedIntent = intentCaptor.getValue();
assertThat(startedIntent.getComponent().getClassName())
.isEqualTo(StorageWizardMigrateConfirm.class.getName()); .isEqualTo(StorageWizardMigrateConfirm.class.getName());
} }
} }