Merge "Add test cases for regression issue"
This commit is contained in:
committed by
Android (Google) Code Review
commit
55ca7a67d4
@@ -56,8 +56,11 @@ import androidx.fragment.app.FragmentActivity;
|
|||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||||
import com.android.settings.widget.LoadingViewController;
|
import com.android.settings.widget.LoadingViewController;
|
||||||
import com.android.settingslib.applications.ApplicationsState;
|
import com.android.settingslib.applications.ApplicationsState;
|
||||||
|
import com.android.settingslib.applications.ApplicationsState.AppEntry;
|
||||||
|
import com.android.settingslib.applications.ApplicationsState.AppFilter;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -66,12 +69,14 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.fakes.RoboMenuItem;
|
import org.robolectric.fakes.RoboMenuItem;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = ShadowUserManager.class)
|
||||||
public class ManageApplicationsTest {
|
public class ManageApplicationsTest {
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
@@ -99,6 +104,7 @@ public class ManageApplicationsTest {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
|
mContext.setTheme(R.style.Theme_AppCompat);
|
||||||
mAppReset = new RoboMenuItem(R.id.reset_app_preferences);
|
mAppReset = new RoboMenuItem(R.id.reset_app_preferences);
|
||||||
mSortRecent = new RoboMenuItem(R.id.sort_order_recent_notification);
|
mSortRecent = new RoboMenuItem(R.id.sort_order_recent_notification);
|
||||||
mSortFrequent = new RoboMenuItem(R.id.sort_order_frequent_notification);
|
mSortFrequent = new RoboMenuItem(R.id.sort_order_frequent_notification);
|
||||||
@@ -109,9 +115,12 @@ public class ManageApplicationsTest {
|
|||||||
mFragment = spy(new ManageApplications());
|
mFragment = spy(new ManageApplications());
|
||||||
when(mFragment.getContext()).thenReturn(mContext);
|
when(mFragment.getContext()).thenReturn(mContext);
|
||||||
when(mFragment.getActivity()).thenReturn(mActivity);
|
when(mFragment.getActivity()).thenReturn(mActivity);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mUserManager",
|
||||||
|
mContext.getSystemService(UserManager.class));
|
||||||
when(mActivity.getResources()).thenReturn(mResources);
|
when(mActivity.getResources()).thenReturn(mResources);
|
||||||
when(mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
when(mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||||
when(mActivity.getPackageManager()).thenReturn(mPackageManager);
|
when(mActivity.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
when(mActivity.getLayoutInflater()).thenReturn(LayoutInflater.from(mContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -527,6 +536,86 @@ public class ManageApplicationsTest {
|
|||||||
assertThat(bundle.getBoolean(ManageApplications.EXTRA_EXPAND_SEARCH_VIEW)).isFalse();
|
assertThat(bundle.getBoolean(ManageApplications.EXTRA_EXPAND_SEARCH_VIEW)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createHeader_batteryListType_hasCorrectItems() {
|
||||||
|
ReflectionHelpers.setField(mFragment, "mListType", ManageApplications.LIST_TYPE_HIGH_POWER);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mRootView",
|
||||||
|
LayoutInflater.from(mContext).inflate(R.layout.manage_applications_apps, null));
|
||||||
|
mFragment.mRecyclerView = new RecyclerView(mContext);
|
||||||
|
final ManageApplications.ApplicationsAdapter adapter =
|
||||||
|
spy(new ManageApplications.ApplicationsAdapter(mState, mFragment,
|
||||||
|
AppFilterRegistry.getInstance().get(FILTER_APPS_ALL), new Bundle()));
|
||||||
|
ReflectionHelpers.setField(mFragment, "mApplications", adapter);
|
||||||
|
|
||||||
|
mFragment.createHeader();
|
||||||
|
|
||||||
|
assertThat(mFragment.mFilterAdapter.getCount()).isEqualTo(2);
|
||||||
|
assertThat(mFragment.mFilterAdapter.getItem(0)).isEqualTo(
|
||||||
|
mContext.getString(R.string.high_power_filter_on));
|
||||||
|
assertThat(mFragment.mFilterAdapter.getItem(1)).isEqualTo(
|
||||||
|
mContext.getString(R.string.filter_all_apps));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createHeader_notificationListType_hasCorrectItems() {
|
||||||
|
ReflectionHelpers.setField(mFragment, "mListType", LIST_TYPE_NOTIFICATION);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mRootView",
|
||||||
|
LayoutInflater.from(mContext).inflate(R.layout.manage_applications_apps, null));
|
||||||
|
mFragment.mRecyclerView = new RecyclerView(mContext);
|
||||||
|
final ManageApplications.ApplicationsAdapter adapter =
|
||||||
|
spy(new ManageApplications.ApplicationsAdapter(mState, mFragment,
|
||||||
|
AppFilterRegistry.getInstance().get(FILTER_APPS_ALL), new Bundle()));
|
||||||
|
ReflectionHelpers.setField(mFragment, "mApplications", adapter);
|
||||||
|
|
||||||
|
mFragment.createHeader();
|
||||||
|
|
||||||
|
assertThat(mFragment.mFilterAdapter.getCount()).isEqualTo(3);
|
||||||
|
assertThat(mFragment.mFilterAdapter.getItem(0)).isEqualTo(
|
||||||
|
mContext.getString(R.string.sort_order_recent_notification));
|
||||||
|
assertThat(mFragment.mFilterAdapter.getItem(1)).isEqualTo(
|
||||||
|
mContext.getString(R.string.sort_order_frequent_notification));
|
||||||
|
assertThat(mFragment.mFilterAdapter.getItem(2)).isEqualTo(
|
||||||
|
mContext.getString(R.string.filter_notif_blocked_apps));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onItemSelected_powerWhiteApps_returnCorrectValue() {
|
||||||
|
ReflectionHelpers.setField(mFragment, "mListType", ManageApplications.LIST_TYPE_HIGH_POWER);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mRootView",
|
||||||
|
LayoutInflater.from(mContext).inflate(R.layout.manage_applications_apps, null));
|
||||||
|
mFragment.mRecyclerView = new RecyclerView(mContext);
|
||||||
|
final ManageApplications.ApplicationsAdapter adapter =
|
||||||
|
spy(new ManageApplications.ApplicationsAdapter(mState, mFragment,
|
||||||
|
AppFilterRegistry.getInstance().get(FILTER_APPS_ALL), new Bundle()));
|
||||||
|
ReflectionHelpers.setField(mFragment, "mApplications", adapter);
|
||||||
|
mFragment.createHeader();
|
||||||
|
|
||||||
|
mFragment.onItemSelected(null, null, 0, 0);
|
||||||
|
|
||||||
|
AppFilter filter = ReflectionHelpers.getField(adapter, "mCompositeFilter");
|
||||||
|
assertThat(filter.filterApp(createPowerWhiteListApp(false))).isFalse();
|
||||||
|
assertThat(filter.filterApp(createPowerWhiteListApp(true))).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onItemSelected_allApps_returnCorrectValue() {
|
||||||
|
ReflectionHelpers.setField(mFragment, "mListType", ManageApplications.LIST_TYPE_HIGH_POWER);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mRootView",
|
||||||
|
LayoutInflater.from(mContext).inflate(R.layout.manage_applications_apps, null));
|
||||||
|
mFragment.mRecyclerView = new RecyclerView(mContext);
|
||||||
|
final ManageApplications.ApplicationsAdapter adapter =
|
||||||
|
spy(new ManageApplications.ApplicationsAdapter(mState, mFragment,
|
||||||
|
AppFilterRegistry.getInstance().get(FILTER_APPS_ALL), new Bundle()));
|
||||||
|
ReflectionHelpers.setField(mFragment, "mApplications", adapter);
|
||||||
|
mFragment.createHeader();
|
||||||
|
|
||||||
|
mFragment.onItemSelected(null, null, 1, 0);
|
||||||
|
|
||||||
|
AppFilter filter = ReflectionHelpers.getField(adapter, "mCompositeFilter");
|
||||||
|
assertThat(filter.filterApp(createPowerWhiteListApp(false))).isTrue();
|
||||||
|
assertThat(filter.filterApp(createPowerWhiteListApp(true))).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
private void setUpOptionMenus() {
|
private void setUpOptionMenus() {
|
||||||
when(mMenu.findItem(anyInt())).thenAnswer(invocation -> {
|
when(mMenu.findItem(anyInt())).thenAnswer(invocation -> {
|
||||||
final Object[] args = invocation.getArguments();
|
final Object[] args = invocation.getArguments();
|
||||||
@@ -544,13 +633,21 @@ public class ManageApplicationsTest {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArrayList<ApplicationsState.AppEntry> getTestAppList(String[] appNames) {
|
private ArrayList<AppEntry> getTestAppList(String[] appNames) {
|
||||||
final ArrayList<ApplicationsState.AppEntry> appList = new ArrayList<>();
|
final ArrayList<AppEntry> appList = new ArrayList<>();
|
||||||
for (String name : appNames) {
|
for (String name : appNames) {
|
||||||
final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
|
final AppEntry appEntry = mock(AppEntry.class);
|
||||||
appEntry.label = name;
|
appEntry.label = name;
|
||||||
appList.add(appEntry);
|
appList.add(appEntry);
|
||||||
}
|
}
|
||||||
return appList;
|
return appList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AppEntry createPowerWhiteListApp(boolean isPowerWhiteListed) {
|
||||||
|
final ApplicationInfo info = new ApplicationInfo();
|
||||||
|
info.sourceDir = "abc";
|
||||||
|
final AppEntry entry = new AppEntry(mContext, info, 0);
|
||||||
|
entry.extraInfo = isPowerWhiteListed ? Boolean.TRUE : Boolean.FALSE;
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user