Only shows two suggestion cards at once.

Displaying too many cards may overwhelm users, so limit
the number of suggestion cards that should be displayed to two.

Fixes: 126213965
Test: robotests
Change-Id: I17c43746f475b31121c5809e0e8c6cf932efb99d
This commit is contained in:
Yi-Ling Chuang
2019-04-29 18:16:30 +08:00
parent 54cddc70e5
commit ec01bff5c4
2 changed files with 24 additions and 110 deletions

View File

@@ -60,6 +60,14 @@ public class ContextualCardLoaderTest {
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
}
@Test
public void loadInBackground_legacyMode_shouldReturnNothing() {
assertThat(mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion))
.isTrue();
assertThat(mContextualCardLoader.loadInBackground()).isEmpty();
}
@Test
public void getDisplayableCards_twoEligibleCards_shouldShowAll() {
final List<ContextualCard> cards = getContextualCardList().stream().limit(2)
@@ -72,53 +80,16 @@ public class ContextualCardLoaderTest {
}
@Test
public void getDisplayableCards_fiveEligibleCardsNoLarge_shouldShowDefaultCardCount() {
final List<ContextualCard> fiveCards = getContextualCardListWithNoLargeCard();
doReturn(fiveCards).when(mContextualCardLoader).filterEligibleCards(anyList());
public void getDisplayableCards_fourEligibleCards_shouldShowDefaultCardCount() {
final List<ContextualCard> fourCards = getContextualCardList();
doReturn(fourCards).when(mContextualCardLoader).filterEligibleCards(anyList());
final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(
fiveCards);
final List<ContextualCard> result = mContextualCardLoader
.getDisplayableCards(fourCards);
assertThat(result).hasSize(DEFAULT_CARD_COUNT);
}
@Test
public void getDisplayableCards_threeEligibleCardsOneLarge_shouldShowThreeCards() {
final List<ContextualCard> cards = getContextualCardList().stream().limit(2)
.collect(Collectors.toList());
cards.add(new ContextualCard.Builder()
.setName("test_gesture")
.setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(Uri.parse(
"content://com.android.settings.test.slices/action/gesture_pick_up"))
.build());
doReturn(cards).when(mContextualCardLoader).filterEligibleCards(anyList());
final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(cards);
assertThat(result).hasSize(3);
}
@Test
public void getDisplayableCards_threeEligibleCardsTwoLarge_shouldShowTwoCards() {
final List<ContextualCard> threeCards = getContextualCardList().stream().limit(3)
.collect(Collectors.toList());
doReturn(threeCards).when(mContextualCardLoader).filterEligibleCards(anyList());
final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(
threeCards);
assertThat(result).hasSize(2);
}
@Test
public void loadInBackground_legacyMode_shouldReturnNothing() {
assertThat(mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion))
.isTrue();
assertThat(mContextualCardLoader.loadInBackground()).isEmpty();
}
@Test
public void getDisplayableCards_refreshCardUri_shouldLogContextualCardDisplay() {
mContextualCardLoader.mNotifyUri = CardContentProvider.REFRESH_CARD_URI;
@@ -167,32 +138,4 @@ public class ContextualCardLoaderTest {
.build());
return cards;
}
private List<ContextualCard> getContextualCardListWithNoLargeCard() {
final List<ContextualCard> cards = new ArrayList<>();
cards.add(new ContextualCard.Builder()
.setName("test_rotate")
.setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(
Uri.parse("content://com.android.settings.test.slices/action/auto_rotate"))
.build());
cards.add(new ContextualCard.Builder()
.setName("test_flashlight")
.setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(
Uri.parse("content://com.android.settings.test.slices/action/flashlight"))
.build());
cards.add(new ContextualCard.Builder()
.setName("test_bt")
.setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(Uri.parse("content://android.settings.test.slices/action/bluetooth"))
.build());
cards.add(new ContextualCard.Builder()
.setName("test_gesture")
.setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(Uri.parse(
"content://com.android.settings.test.slices/action/gesture_pick_up"))
.build());
return cards;
}
}