private static final String STATE_SUGGESTION_LIST = "suggestion_list";
private static final String STATE_CATEGORY_LIST = "category_list";
private static final String STATE_SUGGESTIONS_SHOWN_LOGGED = "suggestions_shown_logged";
- private static final String STATE_SUGGESTION_CONDITION_MODE = "suggestion_condition_mode";
@VisibleForTesting
+ static final String STATE_SUGGESTION_CONDITION_MODE = "suggestion_condition_mode";
+ @VisibleForTesting
static final int SUGGESTION_CONDITION_HEADER_POSITION = 0;
private final IconCache mCache;
int position) {
// If there is suggestions to show, it will be at position 0 as we don't show the suggestion
// header anymore.
- if (position == (SUGGESTION_CONDITION_HEADER_POSITION)
- && mDashboardData.getSuggestions() != null) {
+ final List<Tile> suggestions = mDashboardData.getSuggestions();
+ if (position == SUGGESTION_CONDITION_HEADER_POSITION
+ && suggestions != null && suggestions.size() > 0) {
mSuggestionAdapter = new SuggestionAdapter(mContext, (List<Tile>)
mDashboardData.getItemEntityByPosition(position), mSuggestionsShownLogged);
mSuggestionDismissHandler = new SuggestionDismissController(mContext,
import android.content.res.TypedArray;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Icon;
+import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.conditional.Condition;
+import com.android.settings.dashboard.conditional.ConditionAdapter;
import com.android.settings.dashboard.suggestions.SuggestionAdapter;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
private DashboardAdapter mDashboardAdapter;
private DashboardAdapter.SuggestionAndConditionHeaderHolder mSuggestionHolder;
private DashboardData.SuggestionConditionHeaderData mSuggestionHeaderData;
+ private List<Condition> mConditionList;
@Before
public void setUp() {
when(mResources.getQuantityString(any(int.class), any(int.class), any()))
.thenReturn("");
- List<Condition> conditions = new ArrayList<>();
- conditions.add(mCondition);
- mDashboardAdapter = new DashboardAdapter(mContext, null, conditions, null, null);
- mSuggestionHeaderData = new DashboardData.SuggestionConditionHeaderData(conditions, 1);
+ mConditionList = new ArrayList<>();
+ mConditionList.add(mCondition);
+ when(mCondition.shouldShow()).thenReturn(true);
+ mDashboardAdapter = new DashboardAdapter(mContext, null, mConditionList, null, null);
+ mSuggestionHeaderData = new DashboardData.SuggestionConditionHeaderData(mConditionList, 1);
when(mView.getTag()).thenReturn(mCondition);
}
// should not crash
}
+ @Test
+ public void testBindConditionAndSuggestion_emptySuggestion_shouldSetConditionAdapter() {
+ final Bundle savedInstance = new Bundle();
+ savedInstance.putInt(DashboardAdapter.STATE_SUGGESTION_CONDITION_MODE,
+ DashboardData.HEADER_MODE_FULLY_EXPANDED);
+ mDashboardAdapter = new DashboardAdapter(mContext, savedInstance, mConditionList,
+ null /* SuggestionParser */, null /* SuggestionDismissController.Callback */);
+
+ final List<Tile> suggestions = new ArrayList<>();
+ final List<DashboardCategory> categories = new ArrayList<>();
+ final DashboardCategory category = mock(DashboardCategory.class);
+ categories.add(category);
+ final List<Tile> tiles = new ArrayList<>();
+ tiles.add(mock(Tile.class));
+ category.tiles = tiles;
+ mDashboardAdapter.setCategoriesAndSuggestions(categories, 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);
+
+ mDashboardAdapter.onBindConditionAndSuggestion(
+ holder, DashboardAdapter.SUGGESTION_CONDITION_HEADER_POSITION);
+
+ verify(data).setAdapter(any(ConditionAdapter.class));
+ }
+
private List<Tile> makeSuggestions(String... pkgNames) {
final List<Tile> suggestions = new ArrayList<>();
for (String pkgName : pkgNames) {