Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4053)

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java

Issue 2392943002: 📰 Use the separate button style for the NoArticles status (Closed)
Patch Set: address nit Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java
index 891ca5b649b4673df33f359f92bc43b4779bf301..dda4635bab6dc2891bb365b2a442734f508e142e 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java
@@ -4,16 +4,13 @@
package org.chromium.chrome.browser.ntp.cards;
-import static org.chromium.base.test.util.Matchers.greaterThanOrEqualTo;
-import static org.chromium.chrome.browser.ntp.cards.ContentSuggestionsTestUtils
- .createDummySuggestions;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.anyString;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -26,6 +23,18 @@
import android.view.Menu;
import android.view.MenuItem.OnMenuItemClickListener;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import static org.chromium.base.test.util.Matchers.greaterThanOrEqualTo;
+import static org.chromium.chrome.browser.ntp.cards.ContentSuggestionsTestUtils
+ .createDummySuggestions;
+import static org.chromium.chrome.browser.ntp.cards.ContentSuggestionsTestUtils.createInfo;
+
import org.chromium.base.Callback;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
@@ -48,14 +57,7 @@
import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
import org.chromium.testing.local.LocalRobolectricTestRunner;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import java.nio.channels.UnsupportedAddressTypeException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -118,9 +120,7 @@ public void expect(SectionDescriptor descriptor) {
expect(NewTabPageItem.VIEW_TYPE_HEADER);
if (descriptor.mStatusCard) {
expect(NewTabPageItem.VIEW_TYPE_STATUS);
- if (descriptor.mMoreButton) {
- expect(NewTabPageItem.VIEW_TYPE_ACTION);
- }
+ expect(NewTabPageItem.VIEW_TYPE_ACTION);
expect(NewTabPageItem.VIEW_TYPE_PROGRESS);
} else {
for (int i = 1; i <= descriptor.mNumSuggestions; i++) {
@@ -223,11 +223,11 @@ public void setUp() {
RecordHistogram.disableForTests();
RecordUserAction.disableForTests();
+ @CategoryInt
+ final int category = KnownCategories.ARTICLES;
mSource = new FakeSuggestionsSource();
- mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.INITIALIZING);
- mSource.setInfoForCategory(KnownCategories.ARTICLES,
- new SuggestionsCategoryInfo("Articles for you",
- ContentSuggestionsCardLayout.FULL_CARD, false, true));
+ mSource.setStatusForCategory(category, CategoryStatus.INITIALIZING);
+ mSource.setInfoForCategory(category, createInfo(category, false, true));
mAdapter = NewTabPageAdapter.create(new MockNewTabPageManager(mSource), null, null);
}
@@ -246,36 +246,20 @@ public void tearDown() {
@Feature({"Ntp"})
public void testSuggestionLoading() {
assertItemsFor(sectionWithStatusCard());
- assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
- assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
- assertEquals(NewTabPageItem.VIEW_TYPE_STATUS, mAdapter.getItemViewType(2));
- assertEquals(NewTabPageItem.VIEW_TYPE_PROGRESS, mAdapter.getItemViewType(3));
- assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(4));
- assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(5));
- List<SnippetArticle> suggestions = createDummySuggestions(3);
+ final int numSuggestions = 3;
+ List<SnippetArticle> suggestions = createDummySuggestions(numSuggestions);
mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
- int numItems = mAdapter.getItemCount();
-
- // From the loaded items, cut out aboveTheFold and header from the front,
- // and footer and bottom spacer from the back.
- assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
- assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
- assertArticlesEqual(suggestions, 2, numItems - 2);
- assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(numItems - 2));
- assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(numItems - 1));
+ assertItemsFor(section(numSuggestions));
// The adapter should ignore any new incoming data.
mSource.setSuggestionsForCategory(KnownCategories.ARTICLES,
Arrays.asList(new SnippetArticle[] {new SnippetArticle(0, "foo", "title1", "pub1",
"txt1", "foo", "bar", 0, 0, 0, ContentSuggestionsCardLayout.FULL_CARD)}));
- assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
- assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
- assertArticlesEqual(suggestions, 2, numItems - 2);
- assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(numItems - 2));
- assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(numItems - 1));
+
+ assertItemsFor(section(numSuggestions));
}
/**
@@ -289,37 +273,20 @@ public void testSuggestionLoadingInitiallyEmpty() {
mSource.setSuggestionsForCategory(
KnownCategories.ARTICLES, new ArrayList<SnippetArticle>());
assertItemsFor(sectionWithStatusCard());
- assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
- assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
- assertEquals(NewTabPageItem.VIEW_TYPE_STATUS, mAdapter.getItemViewType(2));
- assertEquals(NewTabPageItem.VIEW_TYPE_PROGRESS, mAdapter.getItemViewType(3));
- assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(4));
- assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(5));
// We should load new suggestions when we get notified about them.
- List<SnippetArticle> suggestions = createDummySuggestions(5);
+ final int numSuggestions = 5;
+ List<SnippetArticle> suggestions = createDummySuggestions(numSuggestions);
mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
- int numItems = mAdapter.getItemCount();
-
- // From the loaded items, cut out aboveTheFold and header from the front,
- // and footer and bottom spacer from the back.
- assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
- assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
- assertArticlesEqual(suggestions, 2, numItems - 2);
- assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(numItems - 2));
- assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(numItems - 1));
+ assertItemsFor(section(numSuggestions));
// The adapter should ignore any new incoming data.
mSource.setSuggestionsForCategory(KnownCategories.ARTICLES,
Arrays.asList(new SnippetArticle[] {new SnippetArticle(0, "foo", "title1", "pub1",
"txt1", "foo", "bar", 0, 0, 0, ContentSuggestionsCardLayout.FULL_CARD)}));
- assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
- assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
- assertArticlesEqual(suggestions, 2, numItems - 2);
- assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(numItems - 2));
- assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(numItems - 1));
+ assertItemsFor(section(numSuggestions));
}
/**
@@ -470,6 +437,7 @@ public void testUIUntouchedWhenNotProvided() {
@Test
@Feature({"Ntp"})
public void testSectionVisibleIfEmpty() {
+ @CategoryInt
final int category = 42;
final int sectionIdx = 1; // section 0 is the above-the-fold item, we test the one after.
final List<SnippetArticle> articles =
@@ -479,9 +447,7 @@ public void testSectionVisibleIfEmpty() {
// Part 1: VisibleIfEmpty = true
suggestionsSource = new FakeSuggestionsSource();
suggestionsSource.setStatusForCategory(category, CategoryStatus.INITIALIZING);
- suggestionsSource.setInfoForCategory(
- category, new SuggestionsCategoryInfo(
- "", ContentSuggestionsCardLayout.MINIMAL_CARD, false, true));
+ suggestionsSource.setInfoForCategory(category, createInfo(category, false, true));
// 1.1 - Initial state
mAdapter =
@@ -505,9 +471,7 @@ public void testSectionVisibleIfEmpty() {
// Part 2: VisibleIfEmpty = false
suggestionsSource = new FakeSuggestionsSource();
suggestionsSource.setStatusForCategory(category, CategoryStatus.INITIALIZING);
- suggestionsSource.setInfoForCategory(
- category, new SuggestionsCategoryInfo(
- "", ContentSuggestionsCardLayout.MINIMAL_CARD, false, false));
+ suggestionsSource.setInfoForCategory(category, createInfo(category, false, false));
// 2.1 - Initial state
mAdapter =
@@ -528,6 +492,7 @@ public void testSectionVisibleIfEmpty() {
@Test
@Feature({"Ntp"})
public void testMoreButton() {
+ @CategoryInt
final int category = 42;
final int sectionIdx = 1; // section 0 is the above the fold, we test the one after.
final List<SnippetArticle> articles =
@@ -538,9 +503,7 @@ public void testMoreButton() {
// Part 1: ShowMoreButton = true
suggestionsSource = new FakeSuggestionsSource();
suggestionsSource.setStatusForCategory(category, CategoryStatus.INITIALIZING);
- suggestionsSource.setInfoForCategory(
- category, new SuggestionsCategoryInfo(
- "", ContentSuggestionsCardLayout.MINIMAL_CARD, true, true));
+ suggestionsSource.setInfoForCategory(category, createInfo(category, true, true));
// 1.1 - Initial state.
mAdapter =
@@ -564,9 +527,7 @@ public void testMoreButton() {
// Part 1: ShowMoreButton = false
suggestionsSource = new FakeSuggestionsSource();
suggestionsSource.setStatusForCategory(category, CategoryStatus.INITIALIZING);
- suggestionsSource.setInfoForCategory(
- category, new SuggestionsCategoryInfo(
- "", ContentSuggestionsCardLayout.MINIMAL_CARD, false, true));
+ suggestionsSource.setInfoForCategory(category, createInfo(category, false, true));
// 2.1 - Initial state.
mAdapter =
@@ -625,9 +586,7 @@ public void testDynamicCategories() {
int dynamicCategory1 = 1010;
List<SnippetArticle> dynamics1 = createDummySuggestions(5);
- mSource.setInfoForCategory(
- dynamicCategory1, new SuggestionsCategoryInfo("Dynamic 1",
- ContentSuggestionsCardLayout.MINIMAL_CARD, true, false));
+ mSource.setInfoForCategory(dynamicCategory1, createInfo(dynamicCategory1, true, false));
mSource.setStatusForCategory(dynamicCategory1, CategoryStatus.AVAILABLE);
mSource.setSuggestionsForCategory(dynamicCategory1, dynamics1);
mAdapter =
@@ -636,9 +595,7 @@ public void testDynamicCategories() {
int dynamicCategory2 = 1011;
List<SnippetArticle> dynamics2 = createDummySuggestions(11);
- mSource.setInfoForCategory(
- dynamicCategory2, new SuggestionsCategoryInfo("Dynamic 2",
- ContentSuggestionsCardLayout.MINIMAL_CARD, false, false));
+ mSource.setInfoForCategory(dynamicCategory2, createInfo(dynamicCategory1, false, false));
mSource.setStatusForCategory(dynamicCategory2, CategoryStatus.AVAILABLE);
mSource.setSuggestionsForCategory(dynamicCategory2, dynamics2);
mAdapter =
@@ -755,6 +712,7 @@ public void testChangeNotifications() {
verify(adapter).notifyItemRemoved(2);
verify(adapter).notifyItemInserted(2);
verify(adapter).notifyItemInserted(3);
+ verify(adapter).notifyItemInserted(4);
// Adapter content:
// Idx | Item
@@ -762,16 +720,19 @@ public void testChangeNotifications() {
// 0 | Above-the-fold
// 1 | Header
// 2 | Status
- // 3 | Progress Indicator
- // 4 | Footer
- // 5 | Spacer
+ // 3 | Action
+ // 4 | Progress Indicator
+ // 5 | Footer
+ // 6 | Spacer
final int newSuggestionCount = 7;
+ final int changedCount = 3; // status, action and progress will be replaced by articles.
suggestionsSource.setSuggestionsForCategory(
KnownCategories.ARTICLES, createDummySuggestions(newSuggestionCount));
adapter.onNewSuggestions(KnownCategories.ARTICLES);
- verify(adapter).notifyItemRangeChanged(2, 2); // status and progress replaced by articles.
- verify(adapter).notifyItemRangeInserted(4, newSuggestionCount - 2);
+ verify(adapter).notifyItemRangeChanged(2, changedCount);
+ verify(adapter).notifyItemRangeInserted(
+ 2 + changedCount, newSuggestionCount - changedCount);
// Adapter content:
// Idx | Item
@@ -785,8 +746,8 @@ public void testChangeNotifications() {
suggestionsSource.setSuggestionsForCategory(
KnownCategories.ARTICLES, createDummySuggestions(0));
adapter.onCategoryStatusChanged(KnownCategories.ARTICLES, CategoryStatus.SIGNED_OUT);
- verify(adapter, times(2)).notifyItemRangeChanged(2, 2);
- verify(adapter).notifyItemRangeRemoved(4, newSuggestionCount - 2);
+ verify(adapter, times(2)).notifyItemRangeChanged(2, changedCount);
+ verify(adapter).notifyItemRangeRemoved(2 + changedCount, newSuggestionCount - changedCount);
}
@Test
@@ -797,18 +758,19 @@ public void testSigninPromo() {
NewTabPageAdapter adapter = NewTabPageAdapter.create(ntpManager, null, null);
assertEquals(5, adapter.getGroups().size());
- ItemGroup signinPromoGroup = adapter.getGroup(4);
+ ItemGroup signinPromoGroup = adapter.getGroup(5);
// Adapter content:
- // Idx | Item
- // ----|----------------
- // 0 | Above-the-fold
- // 1 | Header
- // 2 | Status
- // 3 | Progress Indicator
- // 4 | Sign in promo
- // 5 | Footer
- // 6 | Spacer
+ // Idx | Item | Group Index
+ // ----|--------------------|-------------
+ // 0 | Above-the-fold | 0
+ // 1 | Header | 1
+ // 2 | Status | 1
+ // 3 | Action | 1
+ // 4 | Progress Indicator | 1
+ // 5 | Sign in promo | 2
+ // 6 | Footer | 3
+ // 7 | Spacer | 4
assertEquals(1, signinPromoGroup.getItems().size());
assertEquals(NewTabPageItem.VIEW_TYPE_PROMO, signinPromoGroup.getItems().get(0).getType());
@@ -828,9 +790,10 @@ public void testSigninPromoDismissal() {
.setNewTabPageSigninPromoDismissed(false);
MockNewTabPageManager ntpManager = new MockNewTabPageManager(mSource);
NewTabPageAdapter adapter = NewTabPageAdapter.create(ntpManager, null, null);
+ final int signInPromoIndex = 5;
assertEquals(5, adapter.getGroups().size());
- ItemGroup signinPromoGroup = adapter.getGroup(4);
+ ItemGroup signinPromoGroup = adapter.getGroup(signInPromoIndex);
// Adapter content:
// Idx | Item
@@ -838,14 +801,15 @@ public void testSigninPromoDismissal() {
// 0 | Above-the-fold
// 1 | Header
// 2 | Status
- // 3 | Progress Indicator
- // 4 | Sign in promo
- // 5 | Footer
- // 6 | Spacer
+ // 3 | Action
+ // 4 | Progress Indicator
+ // 5 | Sign in promo
+ // 6 | Footer
+ // 7 | Spacer
assertEquals(NewTabPageItem.VIEW_TYPE_PROMO, signinPromoGroup.getItems().get(0).getType());
- adapter.dismissItem(4);
+ adapter.dismissItem(signInPromoIndex);
assertTrue(signinPromoGroup.getItems().isEmpty());
assertTrue(ChromePreferenceManager.getInstance(RuntimeEnvironment.application)
.getNewTabPageSigninPromoDismissed());
@@ -853,7 +817,7 @@ public void testSigninPromoDismissal() {
adapter = NewTabPageAdapter.create(ntpManager, null, null);
assertEquals(5, adapter.getGroups().size());
// The items below the signin promo move up, footer is now at the position of the promo.
- assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, adapter.getItemViewType(4));
+ assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, adapter.getItemViewType(signInPromoIndex));
}
/** Registers the category with hasMoreButton=false and showIfEmpty=true*/
@@ -863,9 +827,7 @@ private void registerCategory(FakeSuggestionsSource suggestionsSource,
// AVAILABLE.
suggestionsSource.setStatusForCategory(category, CategoryStatus.AVAILABLE);
// Important: showIfEmpty flag to true.
- suggestionsSource.setInfoForCategory(
- category, new SuggestionsCategoryInfo(
- "", ContentSuggestionsCardLayout.FULL_CARD, false, true));
+ suggestionsSource.setInfoForCategory(category, createInfo(category, false, true));
suggestionsSource.setSuggestionsForCategory(
category, createDummySuggestions(suggestionCount));
}
@@ -1034,11 +996,7 @@ public void onLearnMoreClicked() {
@Override
public void closeContextMenu() {
- throw new UnsupportedAddressTypeException();
- }
-
- public void setSuggestionsSource(SuggestionsSource suggestionsSource) {
- mSuggestionsSource = suggestionsSource;
+ throw new UnsupportedOperationException();
}
@Override

Powered by Google App Engine
This is Rietveld 408576698