Limit the suggestions to be shown to 5.
- when creating the dashboard data, pass the sublist of suggestions to cap the total number of suggestions to be shown to 5. - if user swipe away the suggestion, it will only remove the suggestion from the suggestion adapater, and will not trigger rebuilding the whole UI. Bug: 64072051 Change-Id: I1efabeb2a805c670007c631d3ccb0fdfbde7b55a Fix: 63309218 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -321,17 +321,33 @@ public class DashboardAdapterTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSuggestionDismissed_notOnlySuggestion_doNothing() {
|
||||
public void testSuggestionDismissed_notOnlySuggestion_updateSuggestionOnly() {
|
||||
final DashboardAdapter adapter =
|
||||
spy(new DashboardAdapter(mContext, null, null, null, null));
|
||||
adapter.setCategoriesAndSuggestions(
|
||||
null /* category */, makeSuggestions("pkg1", "pkg2", "pkg3"));
|
||||
final List<Tile> suggestions = makeSuggestions("pkg1", "pkg2", "pkg3");
|
||||
adapter.setCategoriesAndSuggestions(null /* category */, suggestions);
|
||||
|
||||
final RecyclerView data = mock(RecyclerView.class);
|
||||
when(data.getResources()).thenReturn(mResources);
|
||||
when(data.getContext()).thenReturn(mContext);
|
||||
when(mResources.getDisplayMetrics()).thenReturn(mock(DisplayMetrics.class));
|
||||
final View itemView = mock(View.class);
|
||||
when(itemView.findViewById(R.id.data)).thenReturn(data);
|
||||
final DashboardAdapter.SuggestionAndConditionContainerHolder holder =
|
||||
new DashboardAdapter.SuggestionAndConditionContainerHolder(itemView);
|
||||
|
||||
adapter.onBindConditionAndSuggestion(
|
||||
holder, DashboardAdapter.SUGGESTION_CONDITION_HEADER_POSITION);
|
||||
|
||||
final DashboardData dashboardData = adapter.mDashboardData;
|
||||
reset(adapter); // clear interactions tracking
|
||||
|
||||
adapter.onSuggestionDismissed();
|
||||
final Tile suggestionToRemove = suggestions.get(1);
|
||||
adapter.onSuggestionDismissed(suggestionToRemove);
|
||||
|
||||
assertThat(adapter.mDashboardData).isEqualTo(dashboardData);
|
||||
assertThat(suggestions.size()).isEqualTo(2);
|
||||
assertThat(suggestions.contains(suggestionToRemove)).isFalse();
|
||||
verify(adapter, never()).notifyDashboardDataChanged(any());
|
||||
}
|
||||
|
||||
@@ -339,11 +355,12 @@ public class DashboardAdapterTest {
|
||||
public void testSuggestionDismissed_onlySuggestion_updateDashboardData() {
|
||||
DashboardAdapter adapter =
|
||||
spy(new DashboardAdapter(mContext, null, null, null, null));
|
||||
adapter.setCategoriesAndSuggestions(null /* category */, makeSuggestions("pkg1"));
|
||||
final List<Tile> suggestions = makeSuggestions("pkg1");
|
||||
adapter.setCategoriesAndSuggestions(null /* category */, suggestions);
|
||||
final DashboardData dashboardData = adapter.mDashboardData;
|
||||
reset(adapter); // clear interactions tracking
|
||||
|
||||
adapter.onSuggestionDismissed();
|
||||
adapter.onSuggestionDismissed(suggestions.get(0));
|
||||
|
||||
assertThat(adapter.mDashboardData).isNotEqualTo(dashboardData);
|
||||
verify(adapter).notifyDashboardDataChanged(any());
|
||||
@@ -385,6 +402,16 @@ public class DashboardAdapterTest {
|
||||
verify(mockIcon).setTint(eq(0x89000000));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetCategoriesAndSuggestions_limitSuggestionSize() {
|
||||
List<Tile> packages =
|
||||
makeSuggestions("pkg1", "pkg2", "pkg3", "pkg4", "pkg5", "pkg6", "pkg7");
|
||||
mDashboardAdapter.setCategoriesAndSuggestions(null /* category */, packages);
|
||||
|
||||
assertThat(mDashboardAdapter.mDashboardData.getSuggestions().size())
|
||||
.isEqualTo(DashboardAdapter.MAX_SUGGESTION_TO_SHOW);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindConditionAndSuggestion_shouldSetSuggestionAdapterAndNoCrash() {
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, null, null, null, null);
|
||||
|
Reference in New Issue
Block a user